用前缀约定调用`~`

时间:2015-10-07 02:01:34

标签: r

这有效

lm(mpg ~ cyl, mtcars)

这样做:

lm(`~`(mpg, cyl), mtcars)

但这不是:

lm(base::`~`(mpg, cyl), mtcars)
Error in terms.formula(formula, data = data) : 
  argument is not a valid model

为什么第三种情况会失败?

1 个答案:

答案 0 :(得分:4)

似乎问题源于git add --all .函数。你从

得到了同样的错误
terms()

这可以追溯到C source for that function

terms(base::`~`(mpg,cyl))

所以它确实在寻找一个tildeSymbol = install("~"); if (!isLanguage(CAR(args)) || CAR(CAR(args)) != tildeSymbol || (length(CAR(args)) != 2 && length(CAR(args)) != 3)) error(_("argument is not a valid model")); ,而不是一个以命名空间为前缀的~。在这种情况下,~函数就像这样

CAR