在R中的同一行上打印字符串和变量内容

时间:2013-03-23 17:07:07

标签: r printing

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

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

我无法找到允许我这样做的语法。

8 个答案:

答案 0 :(得分:250)

您可以将pasteprint

一起使用
print(paste0("Current working dir: ", wd))

cat

cat("Current working dir: ", wd)

答案 1 :(得分:54)

  

{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))

答案 2 :(得分:20)

或使用message

message("Current working dir: ", wd)

@ agstudy的答案在这里更合适

答案 3 :(得分:14)

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

答案 4 :(得分:11)

{glue} package提供字符串插值。在示例中,df['yy'] = df.assign(zz=(df.groupby(['type','xx']).first())).zz.transform(lambda x: 1) 被替换为变量的内容。还支持复杂的表达式。

{wd}

reprex package(v0.2.1)于2019-05-13创建

请注意,打印输出中如何不包含library(glue) wd <- getwd() glue("Current working dir: {wd}") #> Current working dir: /tmp/RtmpteMv88/reprex46156826ee8c 工件和[1]引号,而其他答案则使用"

答案 5 :(得分:7)

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

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

  

格式字符串在OS的sprintf函数中传递,不正确的格式可能导致后者崩溃R进程。

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

答案 6 :(得分:0)

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

例如:

request.user.is_authenticated

答案 7 :(得分:0)

一种技巧是像这样将您的代码片段包含到()中:

(wd <- getwd())

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