R语言如何通过列索引获取对应列的长度?
问题原因
R中对数据框使用[n]单括号单索引取列时,返回的是仅包含第n列的子数据框,而非向量。length()作用于数据框时返回的是数据框的列数,因此你运行length(bd[7])只会得到结果1,无法拿到该列的元素个数。
正确写法
- 方法1:用
[[取列向量再求长度[[索引会直接提取对应列的向量结构,直接传入length()即可得到正确结果:length(bd[[7]]) - 方法2:单括号加逗号指定维度,提取列向量
数据框索引的通用格式是[行索引, 列索引],留空行索引位置表示取所有行,此时返回的是列向量:length(bd[,7]) - 方法3:直接用
nrow()取子数据框的行数
如果你习惯用[7]取单列数据框,可以改用nrow()统计行数,结果和列元素数量一致:nrow(bd[7])
补充:如果你使用的是tidyverse的
tibble类型数据,bd[,7]默认也会返回单列tibble,这种场景下优先使用[[索引取向量更稳妥。
内容的提问来源于stack exchange,提问作者Diego
相关产品推荐
相关产品推荐

