我在R中遇到了一个非常奇怪的问题。我正在尝试使用某个面板plm
运行data.frame
。如果我运行模型,有时会有警告,有时则没有。怎么可能?如果我输入class(mydf)
,完全相同,有时只会发出警告。
有谁知道这是关于什么的?
class(mydf)
[1] "data.frame"
Warning messages:
1: In if (is.na(le)) { :
the condition has length > 1 and only the first element will be used
2: In if (is.na(le)) " __no length(.)__ " else if (give.length) { :
the condition has length > 1 and only the first element will be used
3: In if (le > 0) paste0("[1:", paste(le), "]") else "(0)" :
the condition has length > 1 and only the first element will be used
class(mydf)
[1] "data.frame"
答案 0 :(得分:1)
我不认为所引用的页面解释了为什么会发生这种情况。某处有一个错误。应该跟踪代码并修复违规行:
if (is.na(le)) " __no length(.)__ " else if (give.length) {
....应改为:
if ( all(is.na(le)) ) " __no length(.)__ " else if (give.length) {
我同意保罗的意见,你应该重复这一点。
答案 1 :(得分:0)
这是因为str
检查了它的对象和一些对象的长度,比如Formula
包中的扩展公式没有一个长度。特别是,Formula:::length.Formula
返回一个向量而不是一个数字,这会导致警告。虽然您可能不会自己调用str
,但您的IDE(例如RStudio)可能会使用它来显示工作区中对象的对象结构。