2016-03-21 9 views
1

In R (3.2.2):Drucken unerkannt entkommt (' *') in R

print('\*') #triggers an error 
print('\\*') #prints '\\*'  (two backslashes) 

Wie kann ich '\ *' (1 Backslash) drucken? Ich habe FAQ 7.3.7 und verschiedene Antworten hier über das Drucken von wörtlichen umgekehrten Schrägstrichen gelesen, aber sie scheinen alle zu sagen: "Verwenden Sie zwei umgekehrte Schrägstriche", was nicht funktioniert.

Falls es wichtig ist, was ich wirklich tun möchte, ist

str <- sprintf("complex string \* %s %s %s",other,complex,strings), 

so nicht

cat('\\*') which does produce '\*' 

Antwort

0

verwende ich kann ich glaube, Sie sind nach message oder cat, die auf dem Bildschirm ausgibt

R> message("\\*") 
\* 
R> cat('\\*') 
\* 

Die Druckfunktion gibt ein Objekt zurück (beachten Sie die [1])

R> print('\\*') 
[1] "\\*" 

, die Sie dann übergeben können. So

## Doesn't work 
R> m1 = message("\\*") 
\* 
R> m1 
NULL 

## Good to go 
R> m2 = print('\\*') 
[1] "\\*" 
R> m2 
[1] "\\*" 

daher mit sprintf zu verwenden, haben wir

str <- sprintf("complex string \\* %s","test") 
message(str) 
+0

ich nie ‚Botschaft‘ begegnet war zuvor, also danke für das, aber es wird aus dem gleichen Grund nicht tun Katze gewonnen‘ t - Ich möchte nicht auf den Bildschirm drucken - muss mit sprintf arbeiten. –

+0

Siehe meine aktualisierte Antwort. Der Schlüssel ist zu erinnern, dass der Druck ein Objekt zurückgibt. 'Nachricht' formatiert das Objekt. – csgillespie

+0

Also was ich eigentlich tun muss, ist ein String-Objekt zu konstruieren, das, wenn es gedruckt wird, erscheint als: '> was auch immer 'in der Erwartung, dass wenn es (von' cat' oder 'system') verwendet wird konvertiert zu '\ *'. Das funktioniert für mich, danke. –

Verwandte Themen