0

我在运行这个 plm 模型时遇到问题:

我的数据是(示例):

    country=c(1,1,1,2,2,2,3,3,3)
    year=c(1,2,3,1,2,3,1,2,3)
    a=c(1,4,6,3,5,8,4,5,7)
    b=c(8,5,7,2,7,4,9,7,1)
    matrix=cbind(country, year, a, b)
    matrix=plm.data(matrix)

我运行以下回归:

    reg=plm(a~year+b, data=matrix, index=NULL, model="within")
    summary(reg)

并收到以下警告消息:[1]

    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

怎么了?

4

2 回答 2

1

我有同样的问题并找到了答案(在这里

当像这样的向量时会发出此警告:

le<-c(4,2,6,5)

在这样的测试中使用:

if(is.na(le)) ...

R 只查看向量中的第一个值进行测试,但会警告您还有其他未测试的值。如果测试是:

if(is.na(le[1]))

如果“le”只有一个值或多个值并且您没有收到警告,这并不重要。它通常不会搞砸任何事情。

于 2014-04-15T16:27:00.830 回答
1

这是因为str检查其对象的长度,并plm使用Formula包中的扩展公式。现在,Formula:::length.Formula返回一个向量而不是一个数字,这会导致警告,正如 simon_icl 所解释的那样。虽然您可能不会调用str自己,但您的 IDE(例如 RStudio)可能会使用它来显示工作区中对象的对象结构。

于 2014-06-02T19:41:41.913 回答