2013-01-15 64 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'是一個子類...但'矩陣'不是)。注意,他爲您提供了一種訪問方法,該方法使用矩陣響應指定維度索引的訪問。