当使用Formula包中的Formula()
或as.Formula()
时,我收到一个警告消息。它似乎不影响功能,但我一直无法理解它的来源。
我正在使用Formula
包更新多部分公式(用于AER
包中的ivreg()
,但与问题无关)。在对formula
对象使用Formula()
或as.Formula()
后,我运行的下一行代码会产生一个警告消息。我查看了文档和GitHub仓库,但仍无法理解其来源。
library(Formula)
f1 <- y ~ x1 + x2 | z1 + z2 + z3
F1 <- Formula(f1)
class(F1)
> class(F1)
[1] "Formula" "formula"
Warning message:
In is.name(callee) && length(object) > 20 :
'length(x) = 2 > 1' in coercion to 'logical(1)'
要明确的是,并非专门使用
class(F1)
会产生此警告。例如:> F1 <- Formula(f1)
> print("lol")
[1] "lol"
Warning message:
In is.name(callee) && length(object) > 20 :
'length(x) = 2 > 1' in coercion to 'logical(1)'
我已经给软件包作者发了电子邮件。
该问题似乎与其他软件包无关:
> (.packages())
[1] "stats" "graphics" "grDevices" "utils" "datasets" "methods" "base"
然而,在RGui中未重现警告信息,所以可能与RStudio有关(?)
is.name(callee) && length(object) > 20
似乎不是来自基本的R或者Formula
...至少我在快速搜索中找不到它。 - Achim Zeileis.rs.sanitizeCall()
。它似乎不是很关键,但我建议向RStudio报告此问题。我还添加了rstudio
标签。 - Achim Zeileistools:rstudio
的某个地方。我使用了options(warn = 2)
将警告转换为错误,然后在触发问题后使用了traceback()
。这显示了调用堆栈,我可以快速定位问题。请参见我现在发布的答案,其中解释了更多细节。 - Achim Zeileis