2010-11-01 13 views
85

Próbuję wydrukować wiadomość wielowierszowego w R. Na przykład,poligraficzne nowe linie z print() w R

print("File not supplied.\nUsage: ./program F=filename",quote=0) 

I wyprowadzał

File not supplied.\nUsage: ./program F=filename 

zamiast pożądanego

File not supplied. 
Usage: ./program F=filename 

Odpowiedz

92

Alternatywą cat() jest writeLines():

> writeLines("File not supplied.\nUsage: ./program F=filename") 
File not supplied. 
Usage: ./program F=filename 
> 

Zaletą jest to, że nie trzeba pamiętać, aby dołączyć do "\n" napisu przekazanego cat() uzyskać przełamane po wiadomości. Na przykład. porównać powyższe do tej samej cat() wyjścia:

> cat("File not supplied.\nUsage: ./program F=filename") 
File not supplied. 
Usage: ./program F=filename> 

i

> cat("File not supplied.\nUsage: ./program F=filename","\n") 
File not supplied. 
Usage: ./program F=filename 
> 

Powodem print() nie robić, co chcesz, że print() pokazuje wersję obiektu z poziomu R - w w tym przypadku jest to ciąg znaków. Aby wyświetlić ciąg znaków, należy użyć innych funkcji, takich jak cat() i writeLines(). Mówię "wersja", ponieważ precyzja może zostać zmniejszona w drukowanych numerach, a drukowany obiekt może zostać wzbogacony o dodatkowe informacje, na przykład.

16

Możesz to zrobić:

cat("File not supplied.\nUsage: ./program F=filename\n") 

Należy zauważyć, że cat ma wartość return o wartości NULL.

+3

Ale nie zapomnij o nowej linii. – hadley

+0

+1 @Shane Potrzebowałem kota ("\ n"), by zobaczyć coś, co pomogło! Dziękuję Ci – Alos

5

Użycie writeLines pozwala także zrezygnować z znaku nowej linii "\ n", używając c(). Jak w:

writeLines(c("File not supplied.","Usage: ./program F=filename",[additional text for third line])) 

Jest to przydatne, jeśli planujesz napisanie multilinii wiadomość z kombinowanym stałych i zmiennych wejściowych, takich jak [dodatkowy tekst dla trzeciej linii] powyżej.

Powiązane problemy