繁体   English   中英

R:使用 glm-function 应用列表

[英]R: Apply a list with glm-function

我在尝试将列表中的变量放入glm函数时遇到问题。 我的数据框有很多变量,因此将自变量一个一个地输入到glm会费力。 假设我的数据框是

df <- data.frame(
  id = c(1,2,3,4,5),
  `sitting position` = c("A","B","A","A","B"),
  `variable one` = c("left", "left", "right", "right", "left"),
  `variable two` = c(50, 30, 45, 80, 57),
  `variable three` = c("m","w","w","m","m"),
  check.names = FALSE)

我想在glm函数中使用的列列表如下所示

columns <- dput(colnames(df))[-c(1:2)]

columns 
[1] "variable one"   "variable two"   "variable three"

现在我想将此列表直接放入glm - 函数中,类似于

glm(`sitting position` ~ columns, data = df, familiy = binomial).

代替

glm(`sitting position` ~ `variable one` + `variable two` + `variable three`, data = df, family = binomial())

我知道我不能仅通过添加列表来工作,但我也找不到解决此问题的解决方案。

也许我们可以使用reformulate 重新制定将从字符向量创建公式。 我们可以将glm的输出输入到glm函数的formula参数中。

我包括了一个初步步骤,用一个更干净、更少错误的替代品替换你的列名和janitor::clean_names

library(janitor)

df<-df %>% clean_names
columns<-c('variable_one', 'variable_two', 'variable_three')

然后是实际的解决方案:

glm(formula=reformulate(termlabels = columns, response='sitting_position'), data=df)

看看reformulate是如何工作的:

reformulate(termlabels = columns, response='sitting_position')

sitting_position ~ variable_one + variable_two + variable_three

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM