2010-11-01 34 views
85

Tôi cố gắng để in một thông điệp multiline trong R. Ví dụ,In ấn dòng mới với in() trong R

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 

Trả lời

92

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 truyền cho cat() để có được một dòng mới sau khi thông điệp của bạn. Ví dụ. so sánh trên cùng 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à print() cho bạn thấy một phiên bản của đối tượng so với 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 chức năng 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à ví dụ, đối tượng in có thể được tăng cường với thông tin bổ sung.

16

Bạn có thể làm điều này:

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

Lưu ý rằng cat có giá trị returnNULL.

+3

Nhưng đừng quên dòng mới. – hadley

+0

+1 @Shane Tôi cần con mèo ("\ n") cho một cái gì đó khác nhìn thấy điều này đã giúp! Cảm ơn bạn – Alos

5

Sử dụng dòng ghi cũng cho phép bạn phân chia bằng 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])) 

này là hữu ích nếu bạn có kế hoạch viết một thông điệp multiline với đầu vào kết hợp cố định và biến, chẳng hạn như [văn bản bổ sung cho dòng thứ ba] ở trên.