r - 使用变量作为 R 中的列名拟合 glm

标签 r statistics character curve-fitting glm

我想装一个 glm()在 R 中使用变量而不是列名,但它不起作用。这可以帮助我自动生成 glms。当我适合 glm使用列名,程序运行良好,当我将列名与包含列名的变量交换时,程序给出并出错。

这是我的命令的样子:

##The data
mydata <- structure(list(var1 = c(10L, 100L, 50L, 40L, 20L, 50L, 60L, 55L, 
45L), var2 = c(1.5, 1.2, 1, 1.4, 1.2, 1.4, 1.3, 1.4, 1.3), var3 = c(5L, 
3L, 4L, 1L, 5L, 2L, 7L, 5L, 4L), group = structure(c(1L, 1L, 
2L, 2L, 1L, 1L, 2L, 1L, 1L), .Label = c("A", "B"), class = "factor")), .Names = c("var1", 
"var2", "var3", "group"), class = "data.frame", row.names = c(NA, 
-9L))
## My variable
x <- c("var1+var2")
##Fitting the model
myglm <- glm(formula = group ~ var1+var2 , family = "binomial", data = mydata) ## works fine


myglm2 <- glm(formula = group ~ x , family = "binomial", data = mydata)
Error in model.frame.default(formula = group ~ x, data = mydata, drop.unused.levels = TRUE) : 
  variable lengths differ (found for 'x')

我尝试使用 paste(x)cat(x)功能,但它没有工作。
可以在 R 中做到这一点吗?我需要使用这个,因为我赚了大约 1000 glm在 for 循环中。

最佳答案

使用 as.formula 更轻松地进行编辑:

valid.names <- names(mydata)[names(mydata) != "group"]  # all but group
for(i in 2:length(valid.names)) {
  frm <- as.formula(paste("group ~", valid.names[i - 1], "+" , valid.names[i]))
  myglm <- glm(formula = frm, family = "binomial", data = mydata) ## works fine
}

旧版本

这是使用 parse 的潜在解决方案:
valid.names <- names(mydata[, -4])  # all but group
frm <- group ~ x
for(i in 2:length(valid.names)) {
  varplusvar <- parse(text=paste(valid.names[i - 1], "+" , valid.names[i]))[[1]]
  frm[[3]] <- varplusvar
  myglm <- glm(formula = frm, family = "binomial", data = mydata) ## works fine
}

关于r - 使用变量作为 R 中的列名拟合 glm,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21384303/

相关文章:

r - 单击 R 中的 Sankey Chart 线时添加额外的标签值

regex - 替换格式化数字中的前导空格

r - 在嵌套列表中从第一个列表中选择第一个元素,从第二个列表中选择第二个元素,依此类推

python - 是否有与 MATLAB 的 pearsrnd 函数等效的 Python?

r - 如何根据特定行的比较来消除变量

r - 在R中: add rows based on a date and another condition

R启动函数-plot中t和t*的解释-标准图形的修改

excel - VBA Excel 字符和空格连接多个字符串

unicode - 是否有带有笔划unicode字符的向下双箭头?

python - 在 Python 2.7 中获取字符串的特定字符的性能