การพิมพ์ขึ้นบรรทัดใหม่ด้วยการพิมพ์ () ใน R


113

ฉันพยายามพิมพ์ข้อความหลายบรรทัดใน R ตัวอย่างเช่น

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

ฉันได้รับผลลัพธ์

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

แทนที่ต้องการ

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

คำตอบ:


132

อีกทางเลือกหนึ่งcat()คือwriteLines():

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

ข้อดีคือคุณไม่จำเป็นต้องจำไว้ว่าต้องต่อท้าย"\n"สตริงที่ส่งไปcat()เพื่อขึ้นบรรทัดใหม่หลังข้อความของคุณ เช่นเปรียบเทียบข้างต้นกับcat()ผลลัพธ์เดียวกัน:

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

เหตุผลที่print()ไม่ทำตามที่คุณต้องการคือprint()แสดงเวอร์ชันของอ็อบเจ็กต์จากระดับ R - ในกรณีนี้คือสตริงอักขระ คุณต้องใช้ฟังก์ชันอื่น ๆ เช่นcat()และwriteLines()เพื่อแสดงสตริง ฉันพูดว่า "เวอร์ชัน" เนื่องจากความแม่นยำในตัวเลขที่พิมพ์อาจลดลงและวัตถุที่พิมพ์อาจถูกเติมเต็มด้วยข้อมูลเพิ่มเติมเป็นต้น


writelinesดูเหมือนทั้งสองและ "cat" จะไม่เขียนถึงตัวแปร ฉันพยายามสร้างตัวแปรสตริงที่มีหลายบรรทัด stringvar <- writeLines("line1\nline2")ไม่ได้กำหนด stringvar ผลตอบแทนยังคงเป็นโมฆะทางเลือกอื่น?
sjd

25

คุณสามารถทำได้:

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

สังเกตว่าcatมีreturnค่าNULL.


3
แต่อย่าลืมลากเส้นใหม่
hadley

+1 @ เชนฉันต้องการแมว ("\ n") เพื่อสิ่งอื่นที่ช่วยได้! ขอบคุณ
Alos

7

ใช้ writeLines ยังช่วยให้คุณที่จะแจกจ่ายกับ "\ n" c()ตัวอักษรขึ้นบรรทัดใหม่โดยการใช้ ใน:

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

สิ่งนี้มีประโยชน์หากคุณวางแผนที่จะเขียนข้อความหลายบรรทัดโดยมีการป้อนค่าคงที่และตัวแปรรวมกันเช่น [ข้อความเพิ่มเติมสำหรับบรรทัดที่สาม] ด้านบน


-1

คุณยังสามารถใช้การรวมกันของcatและpaste0

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

ฉันพบว่าสิ่งนี้มีประโยชน์มากขึ้นเมื่อรวมตัวแปรลงในงานพิมพ์ ตัวอย่างเช่น:

file <- "myfile.txt"
cat(paste0("File not supplied.\n", "Usage: ./program F=", file))
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.