2014-02-12 6 views
11

Gibt es eine Möglichkeit, den Code Rscript -e in mehreren Zeilen zur Verfügung zu stellen?Wie wird Rscript -e eine mehrzeilige Zeichenfolge übergeben?

Dies ist möglich, in Vanille R

R --vanilla <<code 
a <- "hello\n" 
cat(a) 
code 

Aber mit Rscript ich zwei verschiedene Dinge auf der R-Version abhängig.

# R 3.0.2 gives two ignores 
Rscript -e ' 
quote> a <- 3+3 
quote> cat(a, "\n") 
quote> ' 
# ARGUMENT 'cat(a,~+~"' __ignored__ 
# ARGUMENT '")' __ignored__ 

Rscript -e 'a <- 3+3;cat(a, "\n")' 
# ARGUMENT '")' __ignored__ 

# R 2.15.3 gives an ignore for the multiline, but it works with semicolons 
Rscript -e ' 
quote> a <- 3+3 
quote> cat(a, "\n") 
quote> ' 
# ARGUMENT 'cat(a,~+~"\n")' __ignored__ 

Rscript -e 'a <- 3+3;cat(a, "\n")' 
6 

Ich verwende eindeutig die falsche Syntax. Was ist der richtige Weg, dies zu tun?

+2

Wenn Sie Linux oder OS X laufen lassen, könnten Sie [** weggeworfener **] (http://dirk.eddelbuettel.com/code/littler.html), die Linie Fortsetzungen zu ermöglichen, erscheint . (Siehe Beispiel auf der verlinkten Webseite.) –

+0

Automatisch +1 für die Erwähnung des richtigen Tools :) –

+0

Ich nehme an, das ist ein Fehler in 'Rscript'? Oder zumindest ein nicht ganz vollständiges Feature? Ich meine das nicht als eine Kritik von Rscript, nur eine Beobachtung, dass Zeilenumbrüche nicht wie erwartet behandelt werden. –

Antwort

6

Update: Ich denke, das Problem war Abstand und Zitate. Das funktionierte (unter Windows):

Rscript -e "a <- 3+3; cat(a,'\n')" 
6 

Auf Mac, müssen Sie die Escape-Zeichen zu entkommen:

Rscript -e 'a <- 3+3; cat(a,"\\n")' 

Sie auch jeden Ausdruck separat setzen.

Rscript -e "a <- 3+3" -e "cat(a)" 
+0

'sep = '\ n'' funktioniert gut unter Windows. –

+1

'Rscript -e" a <- 3 + 3; cat (a, '\ n') "' funktioniert bei mir auf einem Mac mit R 3.0.2 nicht, aber mit '-e' könnte es sich gut gehen lassen Workaround – nachocab

+0

Ich benutze Windows jetzt, weil ich bei der Arbeit bin. Aber ich habe einen Mac zu Hause. Ich werde es dort überprüfen, wenn ich nach Hause komme. –

Verwandte Themen