Mencetak baris baru dengan print () di R


111

Saya mencoba mencetak pesan multiline di R. Misalnya,

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

Saya mendapatkan hasilnya

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

bukan yang diinginkan

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

Jawaban:


130

Alternatifnya cat()adalah writeLines():

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

Keuntungannya adalah Anda tidak perlu mengingat untuk menambahkan a "\n"ke string yang diteruskan cat()untuk mendapatkan baris baru setelah pesan Anda. Misalnya bandingkan hasil di atas dengan cat()keluaran yang sama :

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

dan

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

Alasan print()tidak melakukan apa yang Anda inginkan adalah karena print()menampilkan versi objek dari tingkat R - dalam hal ini adalah string karakter. Anda perlu menggunakan fungsi lain seperti cat()dan writeLines()untuk menampilkan string. Saya mengatakan "versi" karena presisi dapat dikurangi dalam numerik cetak, dan objek yang dicetak dapat ditambah dengan informasi tambahan, misalnya.


Keduanya writelinesdan 'cat` sepertinya tidak menulis ke variabel. Saya mencoba membuat variabel string dengan banyak baris. stringvar <- writeLines("line1\nline2")tidak menetapkan. stringvar kembali masih nol Ada alternatif lain?
sjd

25

Kamu bisa melakukan ini:

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

Perhatikan yang catmemiliki returnnilai NULL.


3
Tapi jangan lupa garis baru yang tertinggal.
hadley

+1 @Shane Saya membutuhkan kucing ("\ n") untuk hal lain melihat ini membantu! Terima kasih
Alos

7

Menggunakan writeLines juga memungkinkan Anda untuk membuang karakter baris baru "\ n", dengan menggunakan c(). Seperti dalam:

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

Ini berguna jika Anda berencana menulis pesan multiline dengan masukan tetap dan variabel gabungan, seperti [teks tambahan untuk baris ketiga] di atas.


-1

Anda juga dapat menggunakan kombinasi catdanpaste0

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

Saya menemukan ini menjadi lebih berguna saat memasukkan variabel ke dalam cetakan. Sebagai contoh:

file <- "myfile.txt"
cat(paste0("File not supplied.\n", "Usage: ./program F=", file))
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.