我有一个非常简单的数据集,我试图在表的第一列执行table(),但R返回一个标题错误消息。我在网上搜索但不太明白为什么会发生这种情况,因为R接受我的桌子作为一张桌子......有人可以建议吗?
我的期望输出:
> table(tab$V1)
CA 1
CO 1
OH 2
然而它返回:
> tabraw
V1 V2
1 OH Cleveland
2 OH Columbus
3 CO Denver
4 CA SanFran
> tab <- table(tabraw)
> tab
V2
V1 Cleveland Columbus Denver SanFran
CA 0 0 0 1
CO 0 0 1 0
OH 1 1 0 0
> table(tab$V1)
Error in tab$V1 : $ operator is invalid for atomic vectors
答案 0 :(得分:6)
您正在寻找
table(tabraw$V1)
#
# CA CO OH
# 1 1 2
对象tab
是类表的对象,不支持$
函数。
您还可以使用
从tab
对象中获取所需信息
rowSums(tab)
# CA CO OH
# 1 1 2
答案 1 :(得分:3)
您应该将表对象视为矩阵,2D从这些矩阵继承所有索引属性(所以[ dim-indices ]
):
is.matrix(tab) # returns TRUE
如果你有一个大于2d的表,它自然会从数组类继承它的访问器函数。使用“$”作为访问者的唯一(典型数据)类是列表(数据帧从中继承)。尝试:
tab[ , 1] # Or
tab[ , "Cleveland"]
(我想我不应该对“$”这么明确。你可以使用该访问者访问某些语言对象和环境对象的元素,因为它们表现为列表。)