列表是一个向量,其每个元素的类型可以不同,可以是向量、矩阵或函数等。
使用双方括号[[]]传入正整数或指定该元素的名称的字符串
对于列表中的 命名元素(前提) ,可使用美元符号运算符$。此方法与使用双方括号并传入命名字符串作用一样,但是 IDE可自动补全,且支持部分匹配的元素名称,更方便。
可使用as.list将其他类型转化为列表,但是因列表元素类型可以不同,故一般不把列表转化为其他类型。
c函数可用于列表的拼接,cbind和rbind 也可用于列表的拼接,但不建议用。
数据框类似一个电子表格,每列可以存储不同类型的数据,每列数据类型必须相同,每列具有相同数目的元素。
data.frame用于创建数据框。 行命名:
输入的向量都没有名称时,每行从1开始自动编号。若有名称,行向量取自第一个向量的名称。若不想按2对行进行命名,可向data.frame传入参数row.names=NULL,则会从1开始自动编号。若想对行向量自己命名,可通过row.names传入行向量名称。注:
可用于矩阵的函数也可用于数据框,如rownames返回行名等(row.names/colnames/col.names/nrow/dim等)length返回与ncol相同,names返回与colnames相同,因此对于数据框最好使用ncol和colnames使用长度不同的向量从创建数据框,只要长度较短的向量能够刚好循环至总长度也可,即要求所有向量长度的最小公倍数必须与最长向量相等。注:
列表可以将其他列表包含在内,因此列表被称为递归变量,向量矩阵数组则被称为原子变量。is.recursive和is.atomic分别用于检查一个变量是递归变量还是原子变量。 NULL是一个空的变量,若某个元素必须存在但没有赋值,可以将NULL赋值给它。 a. NULL是一个变量,长度为零,不占用内存空间。NA是一个标量,长度为1。 b. 缺失值不是NULL。检查是否为NULL,使用is.null。 c. 将已存在的元素赋值为NULL,可将其删除。删除列表中的元素,需要使用list(NULL)。