ฉันพยายามพิมพ์ข้อความหลายบรรทัดใน 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
ฉันพยายามพิมพ์ข้อความหลายบรรทัดใน 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
คำตอบ:
อีกทางเลือกหนึ่ง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 ยังช่วยให้คุณที่จะแจกจ่ายกับ "\ n" c()ตัวอักษรขึ้นบรรทัดใหม่โดยการใช้ ใน:
writeLines(c("File not supplied.","Usage: ./program F=filename",[additional text for third line]))
สิ่งนี้มีประโยชน์หากคุณวางแผนที่จะเขียนข้อความหลายบรรทัดโดยมีการป้อนค่าคงที่และตัวแปรรวมกันเช่น [ข้อความเพิ่มเติมสำหรับบรรทัดที่สาม] ด้านบน
คุณยังสามารถใช้การรวมกันของ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))
writelinesดูเหมือนทั้งสองและ "cat" จะไม่เขียนถึงตัวแปร ฉันพยายามสร้างตัวแปรสตริงที่มีหลายบรรทัดstringvar <- writeLines("line1\nline2")ไม่ได้กำหนดstringvarผลตอบแทนยังคงเป็นโมฆะทางเลือกอื่น?