【发布时间】:2013-03-13 10:42:53
【问题描述】:
有没有办法在同一行打印文本和变量内容?例如,
wd <- getwd()
print("Current working dir: ", wd)
我找不到任何可以让我这样做的语法。
【问题讨论】:
有没有办法在同一行打印文本和变量内容?例如,
wd <- getwd()
print("Current working dir: ", wd)
我找不到任何可以让我这样做的语法。
【问题讨论】:
一个技巧是将您的代码包含在() 中,如下所示:
(wd <- getwd())
表示将当前工作目录分配给wd,然后打印出来。
【讨论】:
{glue} package 提供字符串插值。在示例中,{wd} 被替换为变量的内容。还支持复杂的表达式。
library(glue)
wd <- getwd()
glue("Current working dir: {wd}")
#> Current working dir: /tmp/RtmpteMv88/reprex46156826ee8c
由reprex package (v0.2.1) 于 2019 年 5 月 13 日创建
请注意打印输出如何不包含 [1] 工件和 " 引号,其他答案使用 cat()。
【讨论】:
{glue} 提供了更好的字符串插值,请参阅my other answer。此外,正如 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))
【讨论】:
sprintf 不打印,它只是格式化字符串。在脚本中需要像 print(sprintf(...)) 这样的东西。
您可以使用 paste0 或 cat 方法将字符串与 R 中的变量值组合
例如:
paste0("Value of A : ", a)
cat("Value of A : ", a)
【讨论】:
正如其他用户所说,cat() 可能是最好的选择。
@krlmlr 建议使用 sprintf() 并且它目前是排名第三的答案。 sprintf() 不是一个好主意。来自 R 文档:
格式字符串传递给操作系统的sprintf函数,不正确的格式会导致后者崩溃R进程。
没有充分的理由使用 sprintf() 而不是 cat 或其他选项。
【讨论】:
最简单的方法是使用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()
【讨论】:
您可以将paste 与print 一起使用
print(paste0("Current working dir: ", wd))
或cat
cat("Current working dir: ", wd)
【讨论】:
sep = '',否则你会得到一个额外的空间。
cat() 最后我得到一个 NULL :(
print(cat("test", var)) 应该是 cat("test", var)
或使用message
message("Current working dir: ", wd)
@agstudy 的回答在这里更合适
【讨论】: