【问题标题】:R: Calculating linear models with long vector of predictor variables resulting in parse errorR:计算具有长向量预测变量的线性模型,导致解析错误
【发布时间】: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.formulaformula 但到目前为止没有成功。

我和 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.

标签: r formula paste lm


【解决方案1】:

嗯,公式中似乎不允许使用逗号(感谢评论者!)。所以我通过从预测变量中取出数据框并调用:

OLS_OFM_Subm <- lm(paste("OFM_Subm ~ ", all_predictors, sep = ""), comb)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-12-21
    • 1970-01-01
    • 2015-07-21
    • 1970-01-01
    • 2021-05-24
    • 2023-04-03
    • 2017-03-04
    相关资源
    最近更新 更多