Sto costruendo un'app Web che scarica i tweet utilizzando il pacchetto 'twitteR' R, mungendo quei tweet e visualizzandoli tramite un'app Web R brillante. Non ho alcun problema l'esecuzione del codice che scarica ed elabora i tweets in una cornice di dati:In che modo il pacchetto R "lucido" si occupa dei frame di dati?
do.call('rbind', lapply(userTimeline('nutwition_log'), as.data.frame))
... è possibile eseguire questo nel vostro terminale (con la libreria Twitter caricato) te stesso e vedere che venga scaricato il tweet dati e stampa la cornice dati risultante sullo schermo.
Ma, quando uso questo tipo di chiamata in un app 'lucido' (lato server) ... per esempio ...
server.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")
)
))
... ottengo il seguente errore:
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
... tutto quello che voglio fare è essere in grado di cambiare l'utente di cui tweets vengono scaricati e munged, producendo quindi la struttura risultante dati (... il ritorno datasetInput()
, caricata a output$view
) alla mainPanel()
. Non ho idea del perché questo non funziona.
Qualsiasi aiuto sarebbe fantastico!
Sembra un bug. Dovresti segnalare a: http://groups.google.com/group/shiny-discuss per qualsiasi motivo i metodi per as.data.frame non vengono copiati quando si chiama library (twitteR). Forse anche un problema di namespace. Quando aggiusto il tuo codice per usare 'twitteR :: as.data.frame', emette nuovi errori. –
Questo non è un bug brillante. Si ottiene lo stesso errore con 'as.data.frame (userTimeline (" nutwition_log "))' – GSee
Strano però, perché non è il codice che sta girando. Ma lo tratta come se lo fosse. Sta eseguendo 'lapply (userTimeline (" nutwition_log "), as.data.frame)' –