gpt4 book ai didi

r 错误 dim(X) 必须具有正长度?

转载 作者:行者123 更新时间:2023-12-02 05:37:09 25 4
gpt4 key购买 nike

我想计算内置矩阵 state.x77 的“Population”的平均值。代码是:

apply(state.x77[,"Population"],2,FUN=mean)

#Error in apply(state.x77[, "Population"], 2, FUN = mean) :

# dim(X) must have a positive length

如何防止此错误?如果我使用 $ 符号

apply(state.x77$Population,2,mean)
# Error in state.x77$Population : $ operator is invalid for atomic vectors

什么是原子向量?

最佳答案

要扩展 joran 的评论,请考虑:

> is.vector(state.x77[,"Population"])
[1] TRUE
> is.matrix(state.x77[,"Population"])
[1] FALSE

因此,您的 Population 数据现在与任何其他向量没有什么不同,例如 1:10,它既没有要应用的列也没有行 > 反对。它只是一系列数字,没有更高级的结构或维度。例如

> 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 常见问题解答(这会变得有点复杂,所以请坚持住)...

R has six basic (‘atomic’) vector types: logical, integer, real, complex, string (or character) and raw. http://cran.r-project.org/doc/manuals/r-release/R-lang.html#Vector-objects

因此,本例中的原子指的是向量作为 R 对象的基本构建 block (就像原子构成现实世界中的一切)。

如果您通过输入 ?"$" 作为命令来阅读 R 的内联帮助,您会发现它说:

‘$’ is only valid for recursive objects, and is only discussed in the section below on recursive objects.

由于向量(如 1:10)是基本构建 block (“原子”),没有递归子元素,因此尝试使用 $ 来访问它们不会工作。

由于您的矩阵 (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...

关于r 错误 dim(X) 必须具有正长度?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16682576/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com