将字符串转换为 base R 中的公式对象

Turn a character string into a formula object in base R

我想知道是否有办法将 "time" 之类的字符串转换为 formula 对象,例如 BASE R[=25 中的 time ~ 1 =]?

注意: formula,我的意思是在 lm().

中使用

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

a = "time"

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

# Desired output a formula object:

time ~ 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)))