Advanced R 第三章 向量

如题所述

本章深入探讨了R数据类型中最基础的向量,包括原子向量和列表。
原子向量主要分为逻辑、整数、双和字符四类,统称为数字向量。列表则是元素类型各异的集合。向量的元素类型不同:原子向量所有元素必须相同,而列表元素可以不同。NULL虽然与向量有关,但不是向量,通常用作零长向量。
原子向量有四种主要类型:逻辑、整数、双和字符。每种类型都有特殊的语法来创建单个值,称为标量。使用c()函数可以创建更长的向量,该函数将多个短向量合并为一个较长的向量。向量中的元素类型决定了向量的类型,例如,输入是原子向量时,c()总是生成一个原子向量。
向量中可以包含缺失值(NA),表示未知或不可用的数据。NA值具有传染性,大多数涉及NA值的计算会返回NA。但也有些例外,如NA值与自身进行运算时。使用is.na()函数可以测试向量中是否存在缺失值。
向量可以通过属性添加元数据,如维属性将向量转化为矩阵和数组,类属性驱动S3对象系统。属性可以用于创建S3向量,如因子、日期和时间等。因子用于存储分类数据,构建在整数向量之上,具有class和levels属性。日期向量基于双精度向量,表示自1970-01-01以来的天数。日期-时间向量基于双精度,表示自1970-01-01以来的秒数。连续时间通过difftime构建,基于双精度并带有单位属性。
列表是原子向量的复杂版本,元素可以是任何类型。使用list()函数创建列表。列表可以包含嵌套列表,使其成为递归向量。c()和list()可以将多个列表合并为一个。
数据框和tibbles是建立在列表之上的两个重要S3向量。数据框是一个带命名列表,每个元素长度相同,具有"data.frame"类属性。tibbles是数据框的现代替代,更懒惰、更暴躁,提供更多反馈。它们通过tibble包提供,与数据框共享结构但包含额外的"tbl_df"类属性。
数据框允许您用行名标记行,但tibbles不支持行名,而是提供工具将行名转换为常规列。数据框和tibbles之间最明显的区别在于打印方式和子集行为。tibbles坚持从[返回数据框,并始终发出未找到变量的警告。测试和转换使用is.data.frame()、is_tibble()、as.data.frame()和as_tibble()函数。
数据框和tibbles可以包含列表列,使数据框可以包含任何复杂对象。列表列在tibbles中更为易用,因为它们可以直接包含在tibble()中并被整齐打印。矩阵和数组也可以作为数据框的列,但需小心处理,因为许多使用数据框的函数假设所有列都是向量。
最后,NULL是特殊数据结构,具有唯一类型,长度为零,无属性。使用is.null()测试NULL。NULL常用于表示空值或未定义状态。NULL有特定的用途,例如在条件语句中表示无结果。
温馨提示:答案为网友推荐,仅供参考
相似回答
大家正在搜