[英]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.