R 初学者的长度错误无效

R 初学者的长度错误无效,r,R,我检查了以前的问题,但找不到答案 columnmean<-function(y){ n<-ncol(y) means<-numeric(n) for(i in 1:n){ means[i]<-mean(y[,i]) } means} columnmean以下是错误的再现: columnmean<-function(y){ n <- ncol(y) means <- numeric(n)

我检查了以前的问题,但找不到答案

 columnmean<-function(y){
    n<-ncol(y)
    means<-numeric(n)
    for(i in 1:n){
        means[i]<-mean(y[,i])
    }
    means}

columnmean以下是错误的再现:

columnmean<-function(y){
  n <- ncol(y)
  means <- numeric(n)
  for(i in 1:n) {
    means[i] <- mean(y[,i])
  }
  means
}
columnmean(1:10)

误差取决于
y
y
只有一个维度,即向量~~>误差)。

以下是误差的再现:

columnmean<-function(y){
  n <- ncol(y)
  means <- numeric(n)
  for(i in 1:n) {
    means[i] <- mean(y[,i])
  }
  means
}
columnmean(1:10)

误差取决于
y
y
只有一个维度,即向量~~>误差)。

您想得到数据每列的平均值,对吗?那么为什么不使用这个apply(你的数据名,2,平均值)。然而,如果你想使用这个循环,你能不能也添加一个数据,这样我们就可以重现你的错误,看看哪里出了问题?我认为第三行应该是.numeric。请注意,您应该在运行循环之前创建一个矩阵,该矩阵具有与数据输出相同的维度。为什么不使用内置函数
colMeans
?如果您需要帮助,还应提供最小的可复制代码(例如使用
dput
)@Learner:第三行是正确的,它创建了一个长度为n的空数值向量,该向量将填充for循环。如果你在每一列上运行一个平均值,你就会得到一个向量,而不是一个矩阵。@DeveauP你是对的,但是它应该在循环之外,不是吗?因为每次它都会创建一个新的向量,并且不会保存任何结果,所以您的函数似乎是正确的。应用于数值矩阵时,它不会给出任何错误,并提供与
colMeans()
相同的输出。也许你可以启动一个新的R会话,然后再试一次。你想得到数据中每一列的平均值,对吗?那么为什么不使用这个apply(你的数据名,2,平均值)。然而,如果你想使用这个循环,你能不能也添加一个数据,这样我们就可以重现你的错误,看看哪里出了问题?我认为第三行应该是.numeric。请注意,您应该在运行循环之前创建一个矩阵,该矩阵具有与数据输出相同的维度。为什么不使用内置函数
colMeans
?如果您需要帮助,还应提供最小的可复制代码(例如使用
dput
)@Learner:第三行是正确的,它创建了一个长度为n的空数值向量,该向量将填充for循环。如果你在每一列上运行一个平均值,你就会得到一个向量,而不是一个矩阵。@DeveauP你是对的,但是它应该在循环之外,不是吗?因为每次它都会创建一个新的向量,并且不会保存任何结果,所以您的函数似乎是正确的。应用于数值矩阵时,它不会给出任何错误,并提供与
colMeans()
相同的输出。也许你可以开始一个新的R会话,然后再试一次。
columnmean(BOD)
# [1]  3.666667 14.833333