2012-11-19 11 views
5

ich bei der Verwendung von doppelten Anführungszeichen ein Problem habe, während Text-Strings Formatierung in R. zu Funktionen gesendet werdeneine Textzeichenfolge senden doppelte Anführungszeichen enthalten, funktionieren

ein Beispiel Funktionscode vor:

foo <- function(numarg = 5, textarg = "** Default text **"){ 
    print (textarg) 
    val <- numarg^2 + numarg 
    return(val) 
} 

wenn sie mit der folgenden Eingabe ausgeführt wird:

foo(4, "Learning R is fun!") 

der Ausgang ist:

[1] "Learning R is fun!" 
[1] 20 

Aber wenn ich (auf verschiedene Weise, wie here vorgeschlagen) versuchen, „R“ anstelle von R zu schreiben, habe ich die folgenden Ausgaben erhalten:

> foo(4, "Learning R is fun!") 
[1] "Learning R is fun!" 
[1] 20 
> foo(4, "Learning "R" is fun!") 
Error: unexpected symbol in "funfun(4, "Learning "R" 
> foo(4, "Learning \"R\" is fun!") 
[1] "Learning \"R\" is fun!" 
[1] 20 
> foo(4, 'Learning "R" is fun!') 
[1] "Learning \"R\" is fun!" 
[1] 20 

Mit as.character(...) oder dQuote(...) wie vorgeschlagen here scheint das zu brechen Funktion wegen der unterschiedlichen Anzahl von Argumenten.

Antwort

1

Sie können diese Ansätze versuchen:

foo <- function(numarg = 5, textarg = "** Default text **"){ 
    cat(c(textarg, "\n")) 
    val <- (numarg^2) + numarg 
    return(val) 
} 

foo <- function(numarg = 5, textarg = "** Default text **"){ 
    print(noquote(textarg)) 
    val <- (numarg^2) + numarg 
    return(val) 
} 

foo(4, "Learning R is fun!") 
foo(4, 'Learning "R" is fun!') 
+0

Danke! Sie arbeiten beide! Ich habe bemerkt, dass ich nur 'cat (textarg," \ n ") verwenden kann, anstatt die Ausgabe als ein Array zu formatieren, indem ich' cat (c (textarg, "\ n") 'verwende). – Khaloymes

5

Zwei Möglichkeiten, die ich kenne. Zunächst ist nur einfache Anführungszeichen zu verwenden zu beginnen und die Zeichenfolge enden:

> cat('Learning "R" is fun!') 
Learning "R" is fun! 

Zweitens ist es, die doppelten Anführungszeichen zu entkommen:

> cat("Learning \"R\" is fun!") 
Learning "R" is fun! 

Beachten Sie, dass dies funktioniert, weil ich cat verwenden, die dazu bestimmt ist Ausgabe von Zeichenfolgen an die Konsole. Es scheint, Sie print() verwenden, die eher das Objekt zeigt als Ausgangs es

+2

Wenn ich versuche, 'cat' zu verwenden, während Text-Funktion zu senden, wird der Text korrekt formatiert (mit alle Ihre Vorschläge), nur dieses Mal gibt es 'Learning 'aus R" macht Spaß! NULL' statt 'Lernen" R "macht Spaß!". Irgendeine Idee, wie man diesen "NULL" Zusatz beendet? (Und noch wichtiger, jede Idee, woher kam es?) – Khaloymes