Drukowanie nowych linii z print () w R


111

Próbuję wydrukować wiadomość wielowierszową w R. Na przykład

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

Otrzymuję wynik

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

zamiast pożądanego

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

Odpowiedzi:


130

Alternatywą dla cat()jest writeLines():

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

Zaletą jest to, że nie musisz pamiętać o dodawaniu a "\n"do przekazanego ciągu, cat()aby uzyskać nowy wiersz po wiadomości. Np. Porównaj powyższe z tym samym cat()wyjściem:

> 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
>

Powód print()nie robi tego, co chcesz, to print()pokazanie wersji obiektu z poziomu R - w tym przypadku jest to ciąg znaków. Aby wyświetlić ciąg, musisz użyć innych funkcji, takich jak cat()i writeLines(). Mówię „wersja”, ponieważ w drukowanych numerach można zmniejszyć precyzję, a wydrukowany obiekt może zostać wzbogacony na przykład o dodatkowe informacje.


writelinesWydaje się, że zarówno „kot”, jak i „kot” nie zapisują w zmiennej. Próbowałem utworzyć zmienną łańcuchową z wieloma wierszami. stringvar <- writeLines("line1\nline2")nie przypisuje. stringvar zwraca nadal null Jakaś alternatywa?
sjd

25

Możesz to zrobić:

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

Zwróć uwagę, że catma returnwartość NULL.


3
Ale nie zapomnij o końcowej nowej linii.
hadley

+1 @Shane Potrzebowałem kota ("\ n") do czegoś innego, widząc, że to pomogło! Dziękuję
Alos

7

Korzystanie z metody writeLines pozwala także zrezygnować ze 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 napisać wiadomość wielowierszową z połączonymi danymi wejściowymi stałymi i zmiennymi, takimi jak [dodatkowy tekst w trzeciej linii] powyżej.


-1

Możesz także użyć kombinacji catipaste0

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

Uważam, że jest to bardziej przydatne przy włączaniu zmiennych do wydruku. Na przykład:

file <- "myfile.txt"
cat(paste0("File not supplied.\n", "Usage: ./program F=", file))
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.