代码之家  ›  专栏  ›  技术社区  ›  Dr. Fabian Habersack

编写/应用“减去均值”函数来标准化回归参数

  •  0
  • Dr. Fabian Habersack  · 技术社区  · 8 年前

    所以与其写作 x-mean(x,na.rm=T)

    以下是我尝试的:

    fun <- function(data.frame, x){
    data.frame$x - mean(data.frame$x, na.rm=T)
    }
    

    显然,这并没有错。至少它不会返回错误消息。

    fun mtcars 数据集和变量 disp 产生此错误消息:

    #Loading the data:
     data("mtcars")
    
    fun(mtcars,x=disp) #I tried several ways, e.g. w and w/o "mtcars" in front
    
    Warning message:
     In mean.default(mtcars$x, na.rm = T) :
      argument is not numeric or logical: returning NA
    

    此外,我还在寻找关于编写和应用这样一个函数的类似问题(也超越了堆栈交换领域),但我没有发现任何有用的东西。

    希望我没有因为我的新手R技能而犯错误。

    1 回复  |  直到 8 年前
        1
  •  1
  •   Stanislaus Stadlmann    8 年前

    R中已经有一个函数可以执行您想要执行的操作: scale() . scale(mtcars$hp, center = TRUE, scale = FALSE) 然后从向量本身中减去向量的平均值。

    结合应用,这是强大的;例如,您可以通过以下方式将数据框的每一列居中:

    apply(dataframe, MARGIN = 2, FUN = scale, center = TRUE, scale = FALSE)
    

    关于你的问题:你的函数应该是这样的:

    fun <- function(data.frame, x){
      data.frame[[x]] - mean(data.frame[[x]], na.rm=T)
    }
    

    然后在指定函数时,您必须编写 fun(mtcars, "hp") $ 运算符工作时,不能在其后面使用字符串。