我正在升级我以前工作的项目。这个代码几个月前就开始工作了,与此同时我升级了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'
任何建议都将受到赞赏。
谢谢,
杰森
答案 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 )
)
我收到了与你相同的错误,直到我切换到“@”运算符来访问插槽值。