在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】:您可以将paste
与print
一起使用
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中的同一行上打印字符串和变量内容的主要内容,如果未能解决你的问题,请参考以下文章