In dòng mới với print () trong R


111

Tôi đang cố gắng in một tin nhắn nhiều dòng bằng R. Ví dụ:

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

Tôi nhận được đầu ra

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

thay vì mong muốn

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

Câu trả lời:


130

Một thay thế cho cat()writeLines():

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

Một lợi thế là bạn không cần phải nhớ nối thêm một "\n"vào chuỗi được chuyển đến cat()để có một dòng mới sau tin nhắn của bạn. Ví dụ: so sánh ở trên với cùng một cat()đầu ra:

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

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

Lý do print()không làm những gì bạn muốn là nó print()hiển thị cho bạn một phiên bản của đối tượng từ mức R - trong trường hợp này nó là một chuỗi ký tự. Bạn cần sử dụng các hàm khác như cat()writeLines()để hiển thị chuỗi. Tôi nói "một phiên bản" vì độ chính xác có thể bị giảm trong các số được in và đối tượng được in có thể được bổ sung thêm thông tin, chẳng hạn.


25

Bạn có thể làm được việc này:

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

Chú ý rằng catreturngiá trị là NULL.


3
Nhưng đừng quên dòng mới theo sau.
hadley

+1 @Shane Tôi cần con mèo ("\ n") để làm việc khác, thấy điều này có ích! Cảm ơn bạn
Alos

7

Sử dụng writeLines cũng cho phép bạn phân phối với ký tự dòng mới "\ n" bằng cách sử dụng c() . Như trong:

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

Điều này rất hữu ích nếu bạn định viết một tin nhắn nhiều dòng với đầu vào cố định và biến kết hợp, chẳng hạn như [văn bản bổ sung cho dòng thứ ba] ở trên.


-1

Bạn cũng có thể sử dụng kết hợp catpaste0

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

Tôi thấy điều này hữu ích hơn khi kết hợp các biến vào bản in. Ví dụ:

file <- "myfile.txt"
cat(paste0("File not supplied.\n", "Usage: ./program F=", file))
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.