要擴大joran的意見,認爲:
> is.vector(state.x77[,"Population"])
[1] TRUE
> is.matrix(state.x77[,"Population"])
[1] FALSE
所以,你Population
數據現在已經沒有任何其他向量diferent,像1:10
,這既沒有列或行apply
反對。這只是一系列沒有更高級結構或維度的數字。例如。
> apply(1:10,2,mean)
Error in apply(1:10, 2, mean) : dim(X) must have a positive length
這意味着你可以直接使用mean
功能針對其已選擇的矩陣的子集:例如:
> mean(1:10)
[1] 5.5
> mean(state.x77[,"Population"])
[1] 4246.42
爲了解釋「原子」載體詳情,請參閱將R FAQ再次(這有點複雜,所以請堅持你的帽子)...
R有六個基本('原子')向量類型:邏輯,整數,實數, 複雜,字符串(或字符)和原始。 http://cran.r-project.org/doc/manuals/r-release/R-lang.html#Vector-objects
在這種情況下這樣的原子是指載體爲R對象的基本構建塊(如原子彌補在現實世界中的一切)。
如果通過輸入?"$"
作爲命令讀取R的在線幫助,你會發現它說:
「$」只適用於遞歸對象,僅在下面的部分遞歸討論 對象。
由於載體(如1:10
)是基本的構建模塊(「原子」),沒有遞歸子元素,試圖用$
來訪問它們的部分將無法正常工作。
因爲你的矩陣(statex.77
)本質上只是一些方面載體,如:
> str(matrix(1:10,nrow=2))
int [1:2, 1:5] 1 2 3 4 5 6 7 8 9 10
...你也不能使用$
訪問子部分。
> state.x77$Population
Error in state.x77$Population : $ operator is invalid for atomic vectors
但可以訪問子部分使用[
和名稱,像這樣:
> state.x77[,"Population"]
Alabama Alaska Arizona...
3615 365 2212...
但無論如何,如果你只是幹這一行一列,爲什麼不'平均(state.x77 [, 「人口」])'? – joran
@joran非常感謝。參考常見問題和均值(state.x77 [,「人口」])都是有益的。 – time