235

有没有办法在同一行打印文本和变量内容?例如,

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

我找不到任何有关允许我执行此操作的语法的信息。

4

8 回答 8

353

你可以paste使用print

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

或者cat

cat("Current working dir: ", wd)
于 2013-03-23T17:08:41.047 回答
72

{glue} 提供了更好的字符串插值,请参阅我的其他答案。此外,正如 Dainis 正确提到的,sprintf()并非没有问题。

还有sprintf()

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

要打印到控制台输出,请使用cat()or message()

cat(sprintf("Current working dir: %s\n", wd))
message(sprintf("Current working dir: %s\n", wd))
于 2013-03-23T17:18:12.117 回答
27

或使用message

message("Current working dir: ", wd)

@agstudy 的回答在这里更合适

于 2013-03-23T17:14:02.127 回答
21

最简单的方法是使用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()

于 2015-02-21T20:39:13.273 回答
15

{glue} 包提供字符串插值。在示例中,{wd}用变量的内容替换。还支持复杂的表达式。

library(glue)

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

reprex 包(v0.2.1)于 2019 年 5 月 13 日创建

请注意打印输出如何不包含[1]工件和"引号,其他答案使用cat().

于 2019-05-13T20:59:30.697 回答
9

正如其他用户所说, cat() 可能是最好的选择。

@krlmlr 建议使用 sprintf() ,它目前是排名第三的答案。sprintf() 不是一个好主意。来自 R 文档:

格式字符串传递给操作系统的 sprintf 函数,不正确的格式会导致后者使 R 进程崩溃。

没有充分的理由使用 sprintf() 而不是 cat 或其他选项。

于 2015-06-21T14:38:15.687 回答
2

您可以使用 paste0 或 cat 方法将字符串与 R 中的变量值结合起来

例如:

paste0("Value of A : ", a)

cat("Value of A : ", a)
于 2018-11-29T11:37:11.863 回答
0

一个技巧是将您的代码包含在()这样的中:

(wd <- getwd())

这意味着将当前工作目录分配给wd然后打印。

于 2020-09-25T08:42:28.273 回答