要扩大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