2012-11-27 24 views
11

मैं एक वेब ऐप बना रहा हूं जो 'twitteR' आर पैकेज का उपयोग करके ट्वीट्स डाउनलोड करता है, उन ट्वीट्स को मंथन करता है और उन्हें 'चमकदार' आर वेब ऐप के माध्यम से प्रदर्शित करता है। मैं कोड है कि डाउनलोड और एक डेटा फ्रेम में ट्वीट्स प्रक्रियाओं को क्रियान्वित करने में कोई समस्या नहीं:'चमकदार' आर पैकेज डेटा फ्रेम के साथ कैसे सौदा करता है?

do.call('rbind', lapply(userTimeline('nutwition_log'), as.data.frame)) 

... आप (लोड ट्विटर पुस्तकालय के साथ) अपने आप को अपने टर्मिनल में इस चला सकते हैं और देखते हैं कि यह ट्वीट को डाउनलोड करता है परिणाम और डेटा के परिणामस्वरूप डेटा फ्रेम प्रिंट करता है।

लेकिन, जब मैं (सर्वर साइड) ... उदाहरण के लिए ... एक 'चमकदार' अनुप्रयोग में कॉल की इस तरह का उपयोग


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") 
) 
)) 

... मैं निम्नलिखित त्रुटि मिलती है:

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 

... सब मैं क्या करना चाहते है जिसका ट्वीट्स डाउनलोड किया है और munged किया जा रहा है उपयोगकर्ता को बदलने में सक्षम है, तो करने के लिए उत्पादन परिणामी डेटा फ्रेम (... datasetInput() वापसी, output$view लोड) mainPanel()। मुझे नहीं पता कि यह क्यों काम नहीं कर रहा है।

कोई भी मदद महान होगी!

+1

एक बग की तरह दिखता है। आपको इस पर रिपोर्ट करनी चाहिए: http://groups.google.com/group/shiny-discuss किसी भी कारण से as.data.frame के तरीकों की प्रतिलिपि नहीं बनाई जा रही है जब आप लाइब्रेरी (twitteR) कॉल करते हैं। शायद एक नामस्थान मुद्दा भी। जब मैं 'twitteR :: as.data.frame' का उपयोग करने के लिए अपना कोड समायोजित करता हूं तो यह नई त्रुटियों को पंप करता है। –

+1

यह एक चमकदार बग नहीं है। आपको 'as.data.frame (userTimeline ("nutwition_log") के साथ एक ही त्रुटि मिलती है) ' – GSee

+1

अजीब हालांकि, क्योंकि वह कोड नहीं चल रहा है। लेकिन यह इसका इलाज कर रहा है जैसे वह है। वह 'लापता हो रहा है (उपयोगकर्ता टाइमलिन ("nutwition_log"), as.data.frame) ' –

उत्तर

6

मुझे यकीन नहीं है कि यह एक बग है, लेकिन निश्चित रूप से यहां कुछ अजीबता है जो जो चेंग और सह। के बारे में जानना चाहूंगा। यह काम करता है, इस तरह:

server.R

library(shiny) 
library(twitteR) 
shinyServer(function(input, output) { 

    datasetInput <- reactive(function() { 
    tweets <- userTimeline(input$subscriber) 
    tmp <- lapply(1:length(tweets),function(x) data.frame(
     text=tweets[[x]]$text, 
     created=tweets[[x]]$created, 
     screename=tweets[[x]]$getScreenName())) 

    do.call(rbind,tmp) 
    }) 

    output$view <- reactiveTable(function() { 
    head(datasetInput(), n = input$obs) 
    }) 

}) 

तो यह data.frames के साथ एक समस्या यह है कि जिस तरह से ट्विटर सेट संदर्भ वर्ग status की वस्तुओं के लिए तरीकों के साथ कुछ नहीं है, बल्कि। एक्सेसर्स के माध्यम से फ़ील्ड को संदर्भित करके अपना सटीक कोड चलाना ठीक लगता है।

"अभी तक एक और एस 4/संदर्भ वर्ग रहस्य" जैसा लगता है।

10

मुझे लगता है कि मुझे मिल गया: https://github.com/rstudio/shiny/commit/0b469f09df7e2ca3bbdb2ddadc8473a8126a9431

जब तक यह ठीक से परीक्षण किया है और एक नया चमकदार निर्माण में लुढ़का हुआ है, तो आप इसे GitHub से सीधे स्थापित करने के लिए DevTools का उपयोग करके परीक्षण कर सकते हैं:

library(devtools) 
install_github('shiny', 'rstudio') 

धन्यवाद, एक तय करने के लिए खुश!

+0

मुझे यकीन था कि यह सिर्फ मेरे मामले में गलत तरीके से कोडिंग कर रहा था। मैं थोड़ी परेशान महसूस करता हूं कि मैं मदद कर सकता हूं। नया "डाउनलोड डेटा" अनुभाग देखा। यह पता लगाने के लिए धन्यवाद एक गुच्छा! – user1854990