我在嘗試將串列中的變數放入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-function 中使用的列串列如下所示
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())
我知道我不能僅通過添加串列來作業,但我也找不到解決此問題的解決方案。
uj5u.com熱心網友回復:
也許我們可以使用reformulate. 重新制定將從字符向量創建公式。我們可以將 reformulate 的輸出輸入formula到glm函式的引數中。
我包括了一個初步步驟,用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
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/342649.html
下一篇:制作計算器
