พิมพ์สตริงและเนื้อหาตัวแปรในบรรทัดเดียวกันใน R


199

มีวิธีพิมพ์ข้อความและเนื้อหาตัวแปรในบรรทัดเดียวกันหรือไม่? ตัวอย่างเช่น,

wd <- getwd()
print("Current working dir: ", wd)

ฉันไม่พบอะไรเกี่ยวกับไวยากรณ์ที่จะทำให้ฉันทำเช่นนี้

r  printing 

คำตอบ:


301

คุณสามารถใช้pasteกับprint

print(paste0("Current working dir: ", wd))

หรือ cat

cat("Current working dir: ", wd)

8
คุณอาจต้องการsep = ''หรือคุณจะได้รับพื้นที่เพิ่มเติม
hadley

8
ใช้cat()ฉันได้NULLในตอนท้าย :(
ragesz

5
@ragesz ฉันได้รับเป็นโมฆะในตอนท้ายถ้าคุณใส่แมวด้านในของการพิมพ์เช่น: print(cat("test", var)) ซึ่งควรจะเป็นcat("test", var)
Spidfire

62

สตริงแก้ไข {} กาวข้อเสนอที่ดีมากดูคำตอบอื่น ๆ ของฉัน นอกจากนี้ดังที่ Dainis พูดถึงอย่างถูกต้องว่าsprintf()ไม่ใช่ปัญหา

นอกจากนี้ยังมีsprintf():

sprintf("Current working dir: %s", wd)

หากต้องการพิมพ์ไปยังเอาต์พุตคอนโซลใช้cat()หรือmessage():

cat(sprintf("Current working dir: %s\n", wd))
message(sprintf("Current working dir: %s\n", wd))

อีกตัวเลือกที่ดี! นี่คล้ายกับภาษาสคริปต์อื่น ๆ และสะดวกมากถ้าคุณมีข้อความที่คุณต้องการใช้หลายตัวแปร ขอบคุณ!

1
โดยตัวเลือกที่สะดวกที่สุดโดยเฉพาะอย่างยิ่งถ้าคุณกำลังเขียนอาร์กิวเมนต์ฟังก์ชั่น ด้วยการวางอย่างรวดเร็วกลายเป็นความยุ่งเหยิงอ่านไม่ได้
user27636

2
โปรดทราบsprintfว่าไม่ได้พิมพ์มันเพียงแค่รูปแบบสตริง บางอย่างเช่นการพิมพ์ (sprintf (... )) เป็นสิ่งที่จำเป็นในสคริปต์
CHS


17

วิธีที่ง่ายที่สุดในการทำเช่นนี้คือการใช้ paste()

> paste("Today is", date())
[1] "Today is Sat Feb 21 15:25:18 2015"

paste0() จะส่งผลให้ต่อไปนี้:

> paste0("Today is", date())
[1] "Today isSat Feb 21 15:30:46 2015"

ขอให้สังเกตว่าไม่มีตัวคั่นเริ่มต้นระหว่างสตริงและ x การใช้ช่องว่างที่ส่วนท้ายของสตริงเป็นการแก้ไขด่วน:

> paste0("Today is ", date())
[1] "Today is Sat Feb 21 15:32:17 2015"

จากนั้นรวมฟังก์ชั่นทั้งสองเข้าด้วยกัน print()

> print(paste("This is", date()))
[1] "This is Sat Feb 21 15:34:23 2015"

หรือ

> print(paste0("This is ", date()))
[1] "This is Sat Feb 21 15:34:56 2015"

ตามที่ผู้ใช้รายอื่นระบุไว้คุณสามารถใช้ cat()


14

{} กาวแพคเกจข้อเสนอการแก้ไขสตริง ในตัวอย่าง{wd}ถูกแทนที่ด้วยเนื้อหาของตัวแปร สนับสนุนการแสดงออกที่ซับซ้อน

library(glue)

wd <- getwd()
glue("Current working dir: {wd}")
#> Current working dir: /tmp/RtmpteMv88/reprex46156826ee8c

สร้างเมื่อ 2019-05-13 โดยแพ็คเกจ reprex (v0.2.1)

หมายเหตุวิธีการส่งออกที่พิมพ์ออกมาไม่ได้มี[1]สิ่งประดิษฐ์และคำพูดที่ใช้คำตอบอื่น"cat()


8

ดังที่ผู้ใช้รายอื่นกล่าวไว้ cat () น่าจะเป็นตัวเลือกที่ดีที่สุด

@krlmlr แนะนำให้ใช้ sprintf () และปัจจุบันเป็นคำตอบอันดับที่สาม sprintf () ไม่ใช่ความคิดที่ดี จากเอกสาร R:

สตริงรูปแบบถูกส่งผ่านลงในฟังก์ชั่น sprintf ของระบบปฏิบัติการและรูปแบบที่ไม่ถูกต้องอาจทำให้กระบวนการหลังล้มเหลว

ไม่มีเหตุผลที่ดีที่จะใช้ sprintf () กับ cat หรือตัวเลือกอื่น ๆ


2

คุณสามารถใช้ paste0 หรือ cat วิธีการรวมสตริงกับค่าตัวแปรใน R

ตัวอย่างเช่น:

paste0("Value of A : ", a)

cat("Value of A : ", a)
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.