2016-09-05 2 views
0

Ich versuche, eine kleine glänzende App zu erstellen, die eine Quelldatei aufruft, sobald ein actionButton gedrückt wird. Der actionButton-Beobachter erfasst die input$topic und input$num von der ui.R und ruft dann diese source("downloadTweets.R")-Datei auf, die die in der Umgebung definierten topic- und num-Variablen benötigt, um ordnungsgemäß zu funktionieren.Variablen in Shiny zu einer Quelldatei über Umgebung

# Entry shiny server function 
shinyServer(function(input, output) { 

    observeEvent(input$searchButton, { 
    topic <- as.character(input$hashtagClass) 
    num <- as.numeric(input$numTweetsClass) 
    source("downloadTweets_Topic.R") 
    }) 
}) 

Wenn ich versuche, es zu laufen, gibt es eine Fehlermeldung, die ausgibt, dass topic Wert nicht einmal der Anruf erfolgt, source("downloadTweets_Topic.R") gefunden wurde. Ich bin ziemlich neu in Shiny, ich lese die Dokumentation des Oszilloskops und verwende die reactive() Funktion, aber ich habe Angst, dass ich nicht wirklich verstehe, wie es funktioniert. Gibt es eine Möglichkeit, dies zu tun, oder sollte ich die .R-Datei neu implementieren, damit ich diese Werte an eine Funktion übergeben kann?

Der Grund, warum ich es so mache, ist nur ein Code-Reusal von einem anderen Projekt in R Studio, das keine Shiny-App ist.

+0

try 'source (" downloadTweets.R ", local = TRUE)', Beachten Sie, dass ein Verzeichnis auch mit 'source' angegeben werden muss. Hier nehme ich an, dass die Datei 'downloadTweets.R' im selben Verzeichnis ist wie die' server.r' –

+0

Sie zeigt das selbe Problem wie es aussieht, als ob 'topic' und 'num' nicht definiert sind. Das Sourcing der Datei funktioniert gut, wie der Ausführungsstack zeigt. –

+1

Ohne ein richtiges Beispiel ist es schwer, Ihnen zu helfen. Bitte geben Sie die Quelldatei und die Eingabevariablen an –

Antwort

0

Sieht aus wie die input$hashtagClass fehlt. Werfen Sie eine browser() Zeile über diese Linie, aber innerhalb des Ausdrucks. Dadurch werden Sie in einen Haltepunkt fallen, wenn die App ausgeführt wird und dieser Code ausgelöst wird. Sie können das Problem wahrscheinlich mit einem req Anruf lösen. Schlagen Sie es mit ?req nach.

@Pork chop's Vorschlag, local=T zu source hinzuzufügen, ist ebenfalls wichtig. Dies wird alle zugewiesenen Variablen in das globale env einfügen.

Verwandte Themen