有关Plyr错误的问题:as.double(y)出错:无法强制将'S4'强制转换为'double'类型的向量

时间:2010-11-26 22:25:52

标签: r plyr

我正在升级我以前工作的项目。这个代码几个月前就开始工作了,与此同时我升级了R和plyr。我想我在R1.10上,现在我在R1.35上,我不知道我之前运行的是什么版本的plyr,但我当前安装的版本是1.2。

这是我想要运行的内容:

library(plyr)
library(twitteR)

tw <- head(ldply(searchTwitter("rstats", session=getCurlHandle(), n=10), function(x) data.frame(text=text(x), favorited=favorited(x), created=created(x), truncated=truncated(x), id=id(x), statusSource=statusSource(x), screenName=screenName(x))))

我现在总是收到相同的错误消息。

Error in as.double(y) : 
  cannot coerce type 'S4' to vector of type 'double'

任何建议都将受到赞赏。

谢谢,

杰森

2 个答案:

答案 0 :(得分:4)

在您对正在运行的版本(没有R版本1.35 !!)的混淆中,有几个问题。 (要了解您正在运行的R和软件包的哪个版本,请尝试sessionInfo()。)

首先,您获得的错误来自您使用text()。它应该是statusText()

其次,似乎某些功能/方法未在NAMESPACE包中导出。您可以通过在调用函数时指定正确的命名空间来使其工作,如下面的示例所示,但您应该通过电子邮件发送软件包维护者(Jeff Gentry - CRAN上的联系详细信息)。您可以使用:::运算符引用未导出的函数。 :::获取左侧的包/名称空间名称,右侧是函数名称,例如:

twitteR:::statusSource(x)

以下是您的示例的完整版本:

library(plyr)
library(twitteR)
## simplify the call to see what is going on - function first
fooFun <- function(x) {
    data.frame(text = statusText(x), favorited=favorited(x),
               created=created(x), truncated=twitteR:::truncated(x),
               id=id(x), statusSource=twitteR:::statusSource(x),
               screenName=screenName(x))
}
## now ldply it
out <- ldply(searchTwitter("rstats", session = getCurlHandle(), n = 10), fooFun)
## show some of it:
head(out)

答案 1 :(得分:1)

这适用于当前版本的R(2.12.0)和版本0.91的twitteR:

tw <- ldply(searchTwitter("rstats", session=getCurlHandle(), n=10), 
              function(x)  c(text=x@text, favorited=x@favorited, created=x@created, 
                             truncated=x@truncated, id=x@id, statusSource=x@statusSource, 
                             screenName=x@screenName )
                          )

我收到了与你相同的错误,直到我切换到“@”运算符来访问插槽值。