$运算符对原子向量无效

时间:2013-11-21 15:20:06

标签: r

我有一个非常简单的数据集,我试图在表的第一列执行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

2 个答案:

答案 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"]

(我想我不应该对“$”这么明确。你可以使用该访问者访问某些语言对象和环境对象的元素,因为它们表现为列表。)