2013-01-15 39 views
0
dput(x) 
structure(c("2005-01-01: 1 ", "2005-01-02: 1 ", "2005-01-03: 1 ", 
"2005-01-04: 1 ", "2005-01-05: 1 ", "2005-01-06: 1 ", "(Other) :724 ", 
"Min. : 1.700 ", "1st Qu.: 3.062 ", "Median : 4.345 ", 
"Mean : 6.267 ", "3rd Qu.: 7.435 ", "Max. : 22.100 ", 
"NA's :666.000 ", "Min. : 0.2490 ", "1st Qu.: 0.6182 ", 
"Median : 1.0500 ", "Mean : 2.2679 ", "3rd Qu.: 2.7825 ", 
"Max. : 10.8000 ", "NA's :666.0000 ", "Min. :101 ", 
"1st Qu.:101 ", "Median :101 ", "Mean :101 ", "3rd Qu.:101 ", 
"Max. :101 ", NA), .Dim = c(7L, 4L), .Dimnames = list(c("", 
"", "", "", "", "", ""), c("Dat", "Var1", "Var2", "Name")), class = "table") 

我想看看这样做的列:无法读取汇总函数

x$Var1 

,并收到此错误:

Error in x$Var1 : $ operator is invalid for atomic vectors 

任何想法,我在做什么是这里错了吗?

+0

可能的重复[为什么R不允许$运算符在原子向量?](http://stackoverflow.com/questions/9824268/why-doesnt-r-allow-operator-on-atomic-vectors) – Fraser

+0

但它不是一个原子矢量。它似乎是“table”类的一个对象。 –

+0

@MatthewLundberg,谢谢。但它仍然不适合我。我没有x <-data.frame(x),也没有运气。 – user1471980

回答

2

这工作:

> x[,'Var1'] 

"Min. : 1.700 " "1st Qu.: 3.062 " "Median : 4.345 " "Mean : 6.267 " "3rd Qu.: 7.435 " 

"Max. : 22.100 " "NA's :666.000 " 

一个简单的例子:

y <- rep(letters[1:3], each=10) 
table(y) 
## y 
## a b c 
## 10 10 10 

table(y)$a 
## Error in table(y)$a : $ operator is invalid for atomic vectors 
+0

我不认为这个错误信息是有误导性的。如果人们不明白矩阵真的是折叠的原子矢量,那么就不能有效地使用R.最终会导致像as.data.frame(cbind(object))这样真正具有破坏性的操作,并想知道为什么所有的属性都没有了。 –

3

我的线在这里有点之间的阅读,而是为了得到你想要的每个变量的类型的数据,你可能最好是做类似的事情:

# create some test data 
> test <- data.frame(Dat=1:10,Var1=1:10) 
> result <- lapply(test,summary) 
> result 
$Dat 
    Min. 1st Qu. Median Mean 3rd Qu. Max. 
    1.00 3.25 5.50 5.50 7.75 10.00 

$Var1 
    Min. 1st Qu. Median Mean 3rd Qu. Max. 
    1.00 3.25 5.50 5.50 7.75 10.00 

哪个可以让你做:

> result$Var1 
    Min. 1st Qu. Median Mean 3rd Qu. Max. 
    1.00 3.25 5.50 5.50 7.75 10.00 
+2

结果实际上是一个数字的矢量,而不是奇怪的字符串。 –

0

马修给你误导性的建议,而不是R是误导你的实体。错误信息是准确的,如果你注意,那么你可以学习宝贵的经验教训。 R表格确实是矩阵。它们从is.matrix返回TRUE,并且所有常用的访问方法都能正常工作。 $运算符用于列表(其中'dataframe'是一个子类...但'矩阵'不是)。注意,他为您提供了一种访问方法,该方法使用矩阵响应指定维度索引的访问。