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