R'de baskı () ile satırsonu yazdırma


111

R'de çok satırlı bir mesaj yazdırmaya çalışıyorum. Örneğin,

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

Çıktıyı alıyorum

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

istenen yerine

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

Yanıtlar:


130

Bir alternatif cat()olduğunu writeLines():

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

Bir avantaj, mesajınızdan sonra yeni bir satır almak için "\n"aktarılan dizeye bir eklemeyi hatırlamak zorunda olmamanızdır cat(). Örneğin, yukarıdakileri aynı çıktıyla karşılaştırın cat():

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

ve

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

Bunun nedeni print(), istediğiniz şeyi yapmamasının size print()nesnenin R seviyesinden bir sürümünü göstermesidir - bu durumda bu bir karakter dizesidir. Dizeyi görüntülemek için cat()ve gibi diğer işlevleri kullanmanız gerekir writeLines(). "Bir versiyon" diyorum çünkü basılı sayısallarda hassasiyet azalabilir ve örneğin basılı nesne ekstra bilgilerle artırılabilir.


Hem writelinesve hem de "kedi" bir değişkene yazmıyor. Birden çok satır içeren bir dize değişkeni oluşturmaya çalışıyordum. stringvar <- writeLines("line1\nline2")atamaz. stringvar hala boş dönüyor Herhangi bir alternatif var mı?
sjd

25

Bunu yapabilirsiniz:

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

Bildirim catbir sahiptir returndeğerini NULL.


3
Ancak sondaki yeni satırı unutmayın.
hadley

+1 @Shane Bunun yardımcı olduğunu gören başka bir şey için kediye ("\ n") ihtiyacım vardı! Teşekkür ederim
Alos

7

WriteLines'i kullanmak ayrıca kullanarak "\ n" satırsonu karakterinden vazgeçmenize olanak tanır c(). De olduğu gibi:

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

Yukarıdaki [üçüncü satır için ek metin] gibi birleşik sabit ve değişken girdili çok satırlı bir mesaj yazmayı planlıyorsanız bu yararlıdır.


-1

Ayrıca catve kombinasyonunu da kullanabilirsiniz.paste0

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

Çıktıya değişkenleri dahil ederken bunu daha kullanışlı buluyorum. Örneğin:

file <- "myfile.txt"
cat(paste0("File not supplied.\n", "Usage: ./program F=", file))
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.