Writing/applying "subtract the mean"-标准化回归参数的函数
Writing/applying "subtract the mean"-function to standardize regression parameters
我试图编写并应用一个看似简单的函数来标准化我的连续回归参数/预测变量。原因是我想处理多重共线性。
因此,我不是每次都写 x-mean(x,na.rm=T)
,而是在寻找更方便的东西来完成这项工作——尤其是因为我想在 R 中练习编写函数。;)
所以这是我尝试过的:
fun <- function(data.frame, x){
data.frame$x - mean(data.frame$x, na.rm=T)
}
显然这并没有错。至少它没有 return 错误消息。
但是,将 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
我的猜测是关于我如何应用该函数,因为当我手动执行该函数应该执行的操作时,它运行完美。
此外,我一直在寻找有关编写和应用此类函数的类似问题(也在 Stack Exchange 领域之外),但我没有找到任何有用的信息。
希望我没有因为我的新手 R 技能而犯错误。
R 中已经有一个函数可以执行您想要执行的操作:scale()
。
你可以只写 scale(mtcars$hp, center = TRUE, scale = FALSE)
,然后从向量本身减去向量的平均值。
与apply结合使用,功能强大;例如,您可以通过以下方式将数据框的每一列居中:
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")
并在引号中指定变量名称。这是因为 $
运算符的特殊工作方式,不能在其后使用字符串。
我试图编写并应用一个看似简单的函数来标准化我的连续回归参数/预测变量。原因是我想处理多重共线性。
因此,我不是每次都写 x-mean(x,na.rm=T)
,而是在寻找更方便的东西来完成这项工作——尤其是因为我想在 R 中练习编写函数。;)
所以这是我尝试过的:
fun <- function(data.frame, x){
data.frame$x - mean(data.frame$x, na.rm=T)
}
显然这并没有错。至少它没有 return 错误消息。
但是,将 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
我的猜测是关于我如何应用该函数,因为当我手动执行该函数应该执行的操作时,它运行完美。
此外,我一直在寻找有关编写和应用此类函数的类似问题(也在 Stack Exchange 领域之外),但我没有找到任何有用的信息。
希望我没有因为我的新手 R 技能而犯错误。
R 中已经有一个函数可以执行您想要执行的操作:scale()
。
你可以只写 scale(mtcars$hp, center = TRUE, scale = FALSE)
,然后从向量本身减去向量的平均值。
与apply结合使用,功能强大;例如,您可以通过以下方式将数据框的每一列居中:
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")
并在引号中指定变量名称。这是因为 $
运算符的特殊工作方式,不能在其后使用字符串。