R语言中如何用TRUE索引提取table函数统计结果的真值对应数值
解决方法
错误原因说明
你之前的写法不符合R的索引规则:
- 当你用
table(mtcars$cyl == 6)[TRUE]传入逻辑值作为单中括号索引时,R会自动循环补齐逻辑索引长度,长度为1的TRUE会被补齐为和table结果等长的c(TRUE, TRUE),因此会返回所有元素 - 当你用
[[TRUE]]传入逻辑值作为双中括号索引时,R会将逻辑值强制转换为整数(TRUE对应1,FALSE对应0),因此会提取第一个位置的FALSE对应值25
正确实现方案
方案1:通过字符串名称索引table结果
table返回的命名向量的键是字符串类型的"TRUE",直接传入字符串索引即可:
# 保留名称的提取结果 table(mtcars$cyl == 6)["TRUE"] # 仅提取数值7 as.numeric(table(mtcars$cyl == 6)["TRUE"])
方案2:更简洁的直接计数法
如果你的需求仅为统计mtcars$cyl == 6的TRUE出现次数,完全不需要生成table,直接对逻辑向量求和即可,效率更高:
sum(mtcars$cyl == 6)
运行后直接返回结果7。
内容的提问来源于stack exchange,提问作者symkly
相关产品推荐
相关产品推荐

