下面是我的代码,输出看起来很难理解,有人可以在我出错的地方帮忙。谢谢提前。
columnmean<-function(y){
+ nc<-ncol(y)
+ means<-numeric(nc)
+ for(i in 1:nc){
+ means[i]<- mean(y[,i])
+ }
+ mean
+ }
> columnmean(airquality)
#output is :
function (x, ...)
UseMethod("mean")
<bytecode: 0x102dac638>
<environment: namespace:base>
答案 0 :(得分:1)
您需要返回表示而不是意味着。
columnmean <- function(y) {
nc <- ncol(y)
means <- numeric(nc)
for (i in 1:nc) {
means[i] <- mean(y[, i])
}
means
}
columnmean(airquality)
答案 1 :(得分:0)
所以我赞成了之前的答案,因为它直接解决了这个问题,但以下是一个使for
循环无效的替代方案。
它通常被认为是使用循环来形成列表的错误形式,并且还倾向于使用来自apply
函数组的东西并避免循环。如果有意扩展此功能,循环将引入严重的性能问题。
columnmean<-function(y){
rbind(lapply(y, function(x){
z<-mean(as.numeric(x))
return(z);
}))
}
df<-data.frame(A=runif(1:100,1,100),B=runif(1:100,1,100),C=runif(1:100,1,100))
columnmean(df)