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

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.

Gavin Simpson
sumber
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.

Shane
sumber
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.

pengguna5699217
sumber
-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))
mikey
sumber