R写功能

时间:2017-10-21 15:04:13

标签: r

下面是我的代码,输出看起来很难理解,有人可以在我出错的地方帮忙。谢谢提前。

    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>

2 个答案:

答案 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)