为什么我必须使用手段 [i] 而不仅仅是存储结果,当我这样做时,它会向我显示一些其他值。
mymeans <- function(x){
means <- numeric(ncol(x))
for (i in 1:ncol(x)){
means[i] <- mean(x[,i])
}
return(means[i])
}
在您的函数中,您使用方括号引用i
向量中的索引 ( ) means
。没有这个,你只会返回最后一列的平均值。
首先,这是您处理一些示例数据的函数:
# Create an example set of data
randomValues <- data.frame("A"=rnorm(100, mean=0), "B"=rnorm(100, mean=5), "C"=rnorm(100, mean=500))
# Create a function to calculate the mean value of each column
meanOfEachColumn <- function(dataframe){
# Initialise a vector to store the calculated means
means <- numeric(length=ncol(dataframe))
# Examine each column in the dataframe
for(column in 1:ncol(dataframe)){
means[column] <- mean(dataframe[, column])
}
return(means)
}
# Calculate the mean of each column
meansOfColumns <- meanOfEachColumn(randomValues)
print(meansOfColumns)
0.04983223 4.93306557 500.21016834
在means[column]
上述代码的装置,平均每列的存储在返回的矢量该位置。
没有它,您将获得以下信息:
# Create a function to calculate the mean value of each column
meanOfEachColumn <- function(dataframe){
# Initialise a vector to store the calculated means
means <- numeric(length=ncol(dataframe))
# Examine each column in the dataframe
for(column in 1:ncol(dataframe)){
means <- mean(dataframe[, column])
}
return(means)
}
# Calculate the mean of each column
meansOfColumns <- meanOfEachColumn(randomValues)
print(meansOfColumns)
500.2101
您会注意到示例数据帧中最后一列的平均值randomValues
。这意味着均值 ( means
)的向量已替换为数据帧中最后一列的均值。
此外,作为一般说明,您应该尝试在问题旁边放一个可重现的示例。有关更多详细信息,请参阅此帖子。
最后,R 中有一个函数可以计算数据帧中每一列的平均值:
meansOfColumns <- colMeans(randomValues)
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句