【发布时间】:2017-08-13 08:48:19
【问题描述】:
我正在尝试使用一长串预测变量来计算几个线性模型。因此,我首先在一个长字符串中定义我的预测变量:
#### define predictors ####
all_predictors <- "age + gender + study + ACHIEVER + PLAYER + SOCIALIZER + DISRUPTOR + FREE_SPIRIT + PHILANTHROPIST + INF_POP + PLE_STIM + P19_SDI_thought + P19_SDI_action + P19_Stimulat + P19_Hedonism + P19_Achievement + P19_Power.resources + P19_Power.dominance + P19_Face + P19_Sec.personal + P19_Sec.societal + P19_Traditio + P19_conf_rules + P19_conf_interpersonal + P19_Humility + P19_bene_dependability + P19_bene_caring + P19_univ.concern + P19_univ.nature + P19_univ.tolerance + OFA_Expl + OFA_Geni + OFA_Genw + OFA_Deta + OFA_List + OFA_Comm + OFA_IdeB + OFA_IdeC + OFA_Find + OFA_Coll + OFA_Buil + OFA_Subm + OFA_MakA + OFA_MakF + OFA_ForI + OFA_Give + OFA_Rate + OFA_ForQ + OFA_GenT + OFA_Ment + OFA_Spi, comb"
然后我尝试将预测变量与我的因变量结合起来并调用 lm 模型:
#### OFM_Subm ####
OLS_OFM_Subm <- lm(paste("OFM_Subm ~ ", all_predictors, sep = ""))
但是我总是收到以下错误:
Error in parse(text = x, keep.source = FALSE) :
<text>:1:708: unexpected ','
1: ture + P19_univ.tolerance + OFA_Expl + OFA_Geni + OFA_Genw + OFA_Deta + OFA_List + OFA_Comm + OFA_IdeB + OFA_IdeC + OFA_Find + OFA_Coll + OFA_Buil + OFA_Subm + OFA_MakA + OFA_MakF + OFA_ForI +
我做错了什么?我尝试修改 as.formula 和 formula 但到目前为止没有成功。
我和 paste("OFM_Subm ~ ", all_predictors, sep = "") 放在一起的公式看起来不错:
"OFM_Subm ~ age + gender + study + ACHIEVER + PLAYER + SOCIALIZER + DISRUPTOR + FREE_SPIRIT + PHILANTHROPIST + INF_POP + PLE_STIM + P19_SDI_thought + P19_SDI_action + P19_Stimulat + P19_Hedonism + P19_Achievement + P19_Power.resources + P19_Power.dominance + P19_Face + P19_Sec.personal + P19_Sec.societal + P19_Traditio + P19_conf_rules + P19_conf_interpersonal + P19_Humility + P19_bene_dependability + P19_bene_caring + P19_univ.concern + P19_univ.nature + P19_univ.tolerance + OFA_Expl + OFA_Geni + OFA_Genw + OFA_Deta + OFA_List + OFA_Comm + OFA_IdeB + OFA_IdeC + OFA_Find + OFA_Coll + OFA_Buil + OFA_Subm + OFA_MakA + OFA_MakF + OFA_ForI + OFA_Give + OFA_Rate + OFA_ForQ + OFA_GenT + OFA_Ment + OFA_Spi, comb"
为了澄清,我想打的 lm 电话是:
lm(OFM_Subm ~ age + gender + study + ACHIEVER + PLAYER + SOCIALIZER + DISRUPTOR + FREE_SPIRIT + PHILANTHROPIST + INF_POP + PLE_STIM + P19_SDI_thought + P19_SDI_action + P19_Stimulat + P19_Hedonism + P19_Achievement + P19_Power.resources + P19_Power.dominance + P19_Face + P19_Sec.personal + P19_Sec.societal + P19_Traditio + P19_conf_rules + P19_conf_interpersonal + P19_Humility + P19_bene_dependability + P19_bene_caring + P19_univ.concern + P19_univ.nature + P19_univ.tolerance + OFA_Expl + OFA_Geni + OFA_Genw + OFA_Deta + OFA_List + OFA_Comm + OFA_IdeB + OFA_IdeC + OFA_Find + OFA_Coll + OFA_Buil + OFA_Subm + OFA_MakA + OFA_MakF + OFA_ForI + OFA_Give + OFA_Rate + OFA_ForQ + OFA_GenT + OFA_Ment + OFA_Spi, comb)
由于我必须使用这些相同的预测变量运行许多模型,因此我想缩短代码以获得更好的可读性。
【问题讨论】:
-
一个有效的公式不能包含
,。 -
嗯,但是 lm 的正确公式是 lm(DV ~ IV1 + IV2 + ..., data)?在这里,我的数据存储在“梳状”数据框中。
-
哈哈。你所追求的公式是
OFM_Subm ~ age + gender + ... + OFA_Spi。 数据是comb.