编写一个函数来计算R中数据帧中列的平均值

编写一个函数来计算R中数据帧中列的平均值,r,R,我必须通过编写一个函数然后应用它来计算数据帧中列的平均值。我知道这很容易用mean和apply实现,但我需要编写自己的函数。我已经做了很多尝试,但似乎无法做到这一点。下面是我的三次尝试。我是R的初学者,如有任何建议,我将不胜感激 mean_fun<-function(x){ mean_c[i]= sum(x[1:dim(x)],na.rm=TRUE)/length(x[1:dim(x)]) return(mean_c[i]) } mean_fun<-function(x)

我必须通过编写一个函数然后应用它来计算数据帧中列的平均值。我知道这很容易用
mean
apply
实现,但我需要编写自己的函数。我已经做了很多尝试,但似乎无法做到这一点。下面是我的三次尝试。我是R的初学者,如有任何建议,我将不胜感激

mean_fun<-function(x){
  mean_c[i]= sum(x[1:dim(x)],na.rm=TRUE)/length(x[1:dim(x)])
  return(mean_c[i])
}


mean_fun<-function(x){
  for( i in 1:ncol(x)){
    s=sum(x[1:i],na.rm=TRUE)
    l=dim(x[1:i])
    mean_c=s/l
    return (mean_c)
  }


mean_fun<-function(x){
  x=rbind(x,newrow)
  for(i in 1:ncol(x)){
    x[newbottomrownumber,i]=sum[i]/length[i]}
  return(x[1303,])
}

mean\u fun假设数据框中的所有列都是数字,下面是对第一个函数的调整,其中x是一个向量(mydataframe中的一列)


mean\u-fun这里有一个例子,稍微修改一下你的第二次尝试

mean_fun<-function(x){
    mean_c = numeric(0)
    for( i in 1:ncol(x)){
        s = sum(x[,i], na.rm=TRUE)
        l = length(x[,i][is.na(x[,i]) == FALSE])
        mean_c[i] = s/l
    }
    return (mean_c)
}

为什么不使用
dplyr

您可以使用以下命令获取data.frame中所有列的平均值:

summarise_each(funs(mean))
如果我们将其应用于
mtcars

library(dplyr)
mtcars %>% summarise_each(funs(mean))

#       mpg    cyl     disp       hp     drat      wt     qsec     vs      am   gear   carb
#1 20.09062 6.1875 230.7219 146.6875 3.596563 3.21725 17.84875 0.4375 0.40625 3.6875 2.8125

我非常感谢你的帮助。每列都由数字组成,我试图编写一个函数,计算数据帧中每列的平均值,然后使用apply()应用此函数。因此,预期输出将是例如:5103461062,。。。。我尝试了上面的函数修改,但在长度为0的1:dim(x):参数中收到了输出:Error。您还有其他建议或修改吗?好的!查看我的更新!我在一个数据帧上检查了它,它给出了colMeans给出的确切内容。这是一个更好的习惯用法。如果可以矢量化,请不要拖动循环和索引,例如
sum(x)/length(x)
。在R中,如果可以矢量化,请不要拖动循环和索引,例如
sum(x)/length(x)
。永远不要写
sum(x[1:dim(x)])
summarise_each(funs(mean))
library(dplyr)
mtcars %>% summarise_each(funs(mean))

#       mpg    cyl     disp       hp     drat      wt     qsec     vs      am   gear   carb
#1 20.09062 6.1875 230.7219 146.6875 3.596563 3.21725 17.84875 0.4375 0.40625 3.6875 2.8125