如何从字符串为“rlm”创建公式对象

时间:2014-07-28 11:43:40

标签: r lm

我需要从字符串创建一个公式,现在标准的方法是

f <- paste(var1, var2, sep="~")
lm(f, data=<some data.frame> ...)

但这令人惊讶地失败了“rlm”,它也应该接受在MASS包中出现的公式

rlm(formula, data, weights, ..., subset, na.action,
    method = c("M", "MM", "model.frame"),
    wt.method = c("inv.var", "case"),
    model = TRUE, x.ret = TRUE, y.ret = FALSE, contrasts = NULL)

这是我得到的错误

Na/NaN/Inf in foreign function call

PS:如果我只是硬编码公式而不是使用f

,这样可以正常工作

1 个答案:

答案 0 :(得分:2)

使用as.formula制作f公式对象:

f <- as.formula(paste("stack.loss",".",sep="~"))
rlm(f, stackloss, psi = psi.bisquare)
Call:
rlm(formula = f, data = stackloss, psi = psi.bisquare)
Converged in 11 iterations

Coefficients:
(Intercept)    Air.Flow  Water.Temp  Acid.Conc. 
-42.2852537   0.9275471   0.6507322  -0.1123310 

Degrees of freedom: 21 total; 17 residual
Scale estimate: 2.28