Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/77.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 编写/应用“减去平均值”函数来标准化回归参数_R_Function_Parameters_Regression_Centering - Fatal编程技术网

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

R 编写/应用“减去平均值”函数来标准化回归参数,r,function,parameters,regression,centering,R,Function,Parameters,Regression,Centering,我试图编写并应用一个看似简单的函数来标准化我的连续回归参数/预测值。原因是我想处理多重共线性 因此,我不是每次都写x-meanx,na.rm=T,而是在寻找一种更方便的方法来完成这项工作——不仅仅是因为我想在R中使用书写功能 以下是我尝试过的: fun <- function(data.frame, x){ data.frame$x - mean(data.frame$x, na.rm=T) } 我的猜测是,这是关于我如何应用函数的,因为当我手动执行函数应该执行的操作时,它可以完美地工作

我试图编写并应用一个看似简单的函数来标准化我的连续回归参数/预测值。原因是我想处理多重共线性

因此,我不是每次都写x-meanx,na.rm=T,而是在寻找一种更方便的方法来完成这项工作——不仅仅是因为我想在R中使用书写功能

以下是我尝试过的:

fun <- function(data.frame, x){
data.frame$x - mean(data.frame$x, na.rm=T)
}
我的猜测是,这是关于我如何应用函数的,因为当我手动执行函数应该执行的操作时,它可以完美地工作

此外,我还在堆栈交换领域之外寻找编写和应用这样一个函数的类似问题,但我没有发现任何有用的东西


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

R中已经有一个函数可以实现您想要的功能:缩放。 您只需编写scalemtcars$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)
}

然后,在指定函数时,必须编写funmtcars、hp并用引号指定变量名。这是因为$operator的特殊工作方式,您不能在它后面使用字符串。

使用data.frame[[x]]-meandata.frame[[x]],na.rm=T,其中x是字符串:funmtcars,x=disp.Worked非常好,谢谢!:谢谢答案被接受并投票表决;但是,你能详细解释一下为什么data.frame$x->mtcars$disp不起作用,这样我就可以把我的头绕在这上面了?另外,出于好奇,是否有一种方法可以使函数数据集特定,这样您只需编写funx或funx?我试图使函数特定于我的数据集,但没有成功。当然,现在我有了scale,我不再需要它了。问题在于$operator,它不接受字符串。有多种方法可以子集一个数据帧,最突出的是:df$var和df[[var]]。第二个不接受字符串,而第一个不接受字符串。因此,如果我们想通过字符串来子集,我们必须使用第二个。使函数数据集特定不是您想要做的事情,因为它不会保存任何代码编写。
fun <- function(data.frame, x){
  data.frame[[x]] - mean(data.frame[[x]], na.rm=T)
}