【发布时间】:2012-11-14 13:11:48
【问题描述】:
我正在构建一个网络应用程序,它使用“twitteR”R 包下载推文,整理这些推文并通过“闪亮”R 网络应用程序显示它们。执行将推文下载并处理到数据框中的代码没有问题:
do.call('rbind', lapply(userTimeline('nutwition_log'), as.data.frame))
...您可以自己在终端中运行此程序(加载 twitteR 库),然后查看它下载推文数据并将生成的数据帧打印到屏幕上。
但是,当我在“闪亮”应用程序(服务器端)中使用这种调用时......例如......
服务器.R:
library(shiny)
library(twitteR)
shinyServer(function(input, output) {
datasetInput <- reactive(function() {
tweets <- userTimeline(input$subscriber)
do.call('rbind', lapply(tweets, as.data.frame))
})
output$view <- reactiveTable(function() {
head(datasetInput(), n = input$obs)
})
})
ui.R:
library(shiny)
library(twitteR)
shinyUI(pageWithSidebar(
headerPanel('FitnessTrack'),
sidebarPanel(
selectInput("subscriber", "Select Subscriber:",
choices = c("nutwition_log", "anotherAccount")),
numericInput("obs", "Number of observations to view:", 10)
),
mainPanel(
tableOutput("view")
)
))
...我收到以下错误:
Error in as.data.frame.default(X[[1L]], ...) :
cannot coerce class 'structure("status", package = "twitteR")' into a data.frame
Error in as.data.frame.default(X[[1L]], ...) :
cannot coerce class 'structure("status", package = "twitteR")' into a data.frame
Error in as.data.frame.default(X[[1L]], ...) :
cannot coerce class 'structure("status", package = "twitteR")' into a data.frame
...我想要做的就是能够更改正在下载和修改推文的用户,然后将生成的数据帧(...datasetInput() 返回,加载到output$view)输出到mainPanel()。我不知道为什么这不起作用。
任何帮助都会很棒!
【问题讨论】:
-
看起来像一个错误。您应该报告:groups.google.com/group/shiny-discuss,无论出于何种原因,当您调用 library(twitteR) 时,as.data.frame 的方法都不会被复制。甚至可能是命名空间问题。当我调整您的代码以使用
twitteR::as.data.frame时,它会产生新的错误。 -
这不是一个闪亮的错误。
as.data.frame(userTimeline("nutwition_log"))会出现同样的错误 -
奇怪,因为那不是他正在运行的代码。但它把它当作他是。他正在运行
lapply(userTimeline("nutwition_log"),as.data.frame) -
@BrandonBertelsen 好点!你的第一个预感看起来是正确的。这给出了错误:
lapply(userTimeline("nutwition_log"), base::as.data.frame) -
完美时机!今天早上我正在调查这个错误,但找不到重现案例。这应该有很大帮助。我相信我现在可以查明真相了。
标签: r web-applications twitter dataframe shiny