列表和数据框
list()
#创建列表
month.abb
#列出12月名称的简写
names()
#列表元素命名
** 原子变量 递归变量 **
is.atomic()
#测试是否属于原子变量
is.recursive()
测试是否属于递归变量
** 列表的维度和算术运算**
- 列表没有维度
- 列表的长度是顶层元素的数目
- 算术运算对列表不起作用
** 索引列表 **
- 方括号,正或负的下标,元素名称或逻辑索引 结果是一个列表
- 双方括号传入整数或者指定该元素的名称字符串 结果是列表的元素
- 对于列表的命名元素,可以使用美元符号$
- 可以通过嵌套方括号或传入向量来访问嵌套元素
** 向量和列表之间的转换 **
as.list()
#转换为列表
unlist()
#转换混合列表为向量
** 组合列表 **
c()
#拼接列表,拼接列表和向量,向量自动转换为列表
cbind() rbind()
#尽量不用
NULL
#空的变量 创建列表时可能会想指定一个元素,表明它必须存在但没有赋值。
NA
一个标量值;
NULL
长度为零不占用任何空间
*要删除列表中的元素,把元素设置为NULL就会删除它 *
is.null()
#测试是否为NULL值
list(NULL)
#将现有元素设置为NULL值
** 成对列表 **
formals()
#返回一个函数参数的成对列表
成对列表与列表的区别:长度为0的成对的列表为NULL,长度为0的列表是一个空列表。
** data.frame() ** #创建数据框
- 数据框每列的类型可与其他列不同,但同一列的元素类型必须相同
- 行自动编号,如果输入的任何向量有名称,行名称取自第一个向量名称,这种命名规则可以传入row.names = NULL 覆盖掉
- 还可以通过给row.names传入一个向量来为每行命名
- 默认情况下列名必须是唯一且有效的变量名称,此功能可以通过参数check.names = FALSE来关闭
rownames()
colnames()
dimnames()
nrow()
ncol()
dim()
** 索引数据框 **
- 方括号里分别对行和列使用正整数、负整数、逻辑值和字符
- 只选择一列,带有正整数或名称的双方括号或带有名称的美元符号
subset()
#获取数据框子集,三个参数(数据框,行的条件逻辑向量,保留的名字向量),直接键入行列名称
cbind()
rbind()
merge()
#根据两个数据框相同的列时合并,by参数指定共享列
如果数据框只包含数值,可以使用colSums colMeans rowSums
rowMeans函数