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

Posted

技术标签:

【中文标题】在R中的同一行上打印字符串和变量内容【英文标题】:Print string and variable contents on the same line in R 【发布时间】:2013-03-13 10:42:53 【问题描述】:

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

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

我找不到任何可以让我这样做的语法。

【问题讨论】:

【参考方案1】:

一个技巧是将您的代码包含在() 中,如下所示:

(wd <- getwd())

表示将当前工作目录分配给wd,然后打印出来。

【讨论】:

【参考方案2】:

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

【讨论】:

我喜欢这个胶水包,因为在同一个句子中打印数字和字符串的格式类似于python的语法!【参考方案3】:

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(...)) 这样的东西。【参考方案4】:

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

例如:

paste0("Value of A : ", a)

cat("Value of A : ", a)

【讨论】:

【参考方案5】:

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

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

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

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

【讨论】:

【参考方案6】:

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

【讨论】:

【参考方案7】:

您可以将pasteprint 一起使用

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

cat

cat("Current working dir: ", wd)

【讨论】:

你可能想要sep = '',否则你会得到一个额外的空间。 使用 cat() 最后我得到一个 NULL :( @ragesz 如果您将 cat 放在打印件中,我只会在最后得到 null,例如:print(cat("test", var)) 应该是 cat("test", var)【参考方案8】:

或使用message

message("Current working dir: ", wd)

@agstudy 的回答在这里更合适

【讨论】:

哇非常简单!

以上是关于在R中的同一行上打印字符串和变量内容的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Python 的同一行上打印变量和字符串?

在 Python 中的同一行上打印多个

在Ruby中的同一行中打印不同大小数组的数组元素

在一行上组合并打印不同的变量

如何以编程方式在eclipse中的同一行上制作两个按钮?

如何使通过公共相关 ID 链接的变量显示在 Splunk 表的同一行上?