将字符串转换为 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)))
我想知道是否有办法将 "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)))