我只是尝试在R中编写多元线性回归函数。但是当我想将读取数据函数放入一个块时会出现错误。有一个错误: df $ X1:'closure'类型的对象不是子集表调用 当我运行这个块时,这个错误不会发生,只有在我编织时才会出现。
```{r, warning=FALSE, message = FALSE}
#Create the function of multiple linear regression
MLG = function (x,y, FileName) {
df = read.csv(FileName, fileEncoding = "UTF-8-BOM", header = TRUE)
summary(df)
#create the model
lm = lm (x~y, df)
#call lm to see result
lm
#get the result of model
summary(lm)
#plot the result of model to analysis the outliers
par(mfrow = c(2,2))
plot(lm)
}
MLG(FileName = "1.5.csv", x = df$X1, y= df$X3 + df$X4 + df$X5 + df$X6 + df$X7)
```
这是我的代码。
答案 0 :(得分:0)
在df$X1
创建之前,您无法将df
传递给某个功能。简单的方法是将公式传递给您的函数(在lm
调用之前,它不会查找它引用的对象。
MLG = function (formula, FileName) {
df = read.csv(FileName, fileEncoding = "UTF-8-BOM", header = TRUE)
summary(df)
#create the model
lm = lm (formula, df)
#call lm to see result
lm
#get the result of model
summary(lm)
#plot the result of model to analysis the outliers
par(mfrow = c(2,2))
plot(lm)
}
MLG(FileName = "1.5.csv", formula = X1 ~ X3 + X4 + X5 + X6 + X7)
这也使您能够添加交互术语,转换等。
作为旁注,我建议您使用无处不在的约定,y
是您的回复,而x
是您的预测因素。切换它们会引起混淆。