2016-06-16 10 views
2

R hat eine feine Unterscheidung zwischen dem Ausführen und dem Sourcing einer Datei. Die Quelle geht davon aus, dass die Eingabe ein gültiger R-Code ist. Ich habe eine Funktion, die nach einer interaktiven Eingabe über readlines() fragt. Ich habe die gewünschte Eingabe in einer Datei aufgezeichnet, kann aber nicht herausfinden, wie ich von einer Datei aus laufe.R run nicht Quelle eine Datei für die interaktive Eingabe

Hier ist ein Beispiel, eine kleine Funktion, die interaktiv für Text fragt und druckt es aus:

spacefun <- function() { 
    text <- readline("Input text: ") 
    print(text) 
} 

Eine separate Datei test.R diese Funktion aufruft, und liefert den Text.

spacefun() 
Test Line 

source() und parse() beiden Wurffehler auf dem Leerzeichen:

Error in source("~test.R", echo = TRUE) : 
    ~test.R:2:6: unexpected symbol 
1: spacefun() 
2: Test Line 

Gedanken?

+0

'readline' ist nur für den interaktiven Gebrauch, warum brauchen Sie es so? – rawr

+0

Ich arbeite an einem Paket, bei dem interaktive Eingabe die beste Möglichkeit ist, ein bestimmtes Objekt mit einer komplizierten, benutzerdefinierten Struktur zu erstellen. Während ich es einfach mit der Hand laufen kann, ist das natürlich nicht gut für die Reproduzierbarkeit. Ich nehme an, dass eine Alternative zu readLine auch funktionieren würde, wenn sie Whitespace liefern könnte. –

Antwort

0

Make readline wait for input in R beantwortet

, wenn Sie Skriptmodus verwenden, sollten Sie readlines() für die Eingabe und Katze() für die Ausgabe verwenden, es ist eine seltsame Design und ich weiß nicht, warum.

cat("a string please: "); 
a <- readLines("stdin",n=1); 
cat("You entered") 
str(a); 
cat("\n") 
Verwandte Themen