【问题标题】:Turn a character string into a formula object in base R将字符串转换为基础 R 中的公式对象
【发布时间】:2020-07-02 13:03:39
【问题描述】:

我想知道是否有办法在BASE R中将"time" 之类的字符串转换为formula 之类的time ~ 1 对象?

注意:formula,我的意思是在lm()中使用。

这是我尝试但没有成功的方法:

a = "time"

formula(bquote(.(noquote(a)))~1)

# Desired output a formula object:

time ~ 1

【问题讨论】:

  • @caldwellst,我看到了,但这无济于事!请您在lm 中尝试一下。我想在回归中使用该公式!请注意我的标签中的lm
  • 如果您使用lm 和从formulareformulate 生成的公式,您会注意到模型的结果将显示formula = f(如果f 是您的公式) .如果您希望结果显示实际公式,而不是存储公式的变量,您可以执行以下操作:model <- eval(bquote(lm(.(f), data = dataset))) 其中f 是公式,dataset 是您的数据。以为我会提到以防万一可能有帮助。

标签: r regex string formula lm


【解决方案1】:

使用reformulate

a <- "time"
reformulate("1", a)
## time ~ 1

这也有效:

formula(paste(a, "~ 1"))
## time ~ 1

lm

请注意,lm 可以采用字符串而不是公式,因此我们实际上不必将字符串转换为公式(除非公式具有附加的环境,因此在某些情况下它可能会生成差异虽然通常不会)。下面的ch 可能是从碎片粘贴在一起的。下面的两个lm 示例都有效,但第一个示例将在输出中按字面意思显示Call: lm(formula = ch, data = BOD),而后者将在输出中显示实际公式Call: lm(formula = "demand ~ Time", data = BOD)

ch <- "demand ~ Time"

lm(ch, BOD)
do.call("lm", list(ch, quote(BOD))) 

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-01-02
    • 1970-01-01
    • 1970-01-01
    • 2011-06-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-12-06
    相关资源
    最近更新 更多