首页 > 解决方案 > 使用新行创建动态文本

问题描述

我正在尝试创建一个用于在ggplot2. 为了对文本进行样式化,我希望将信息分成几行。这就是我正在尝试的:

txt1<-paste("Question: ", df$q1) ; txt2<-paste("Gender: ", df$gender)
txt3<-paste("response: ", df$rspns)
txt<-cat(paste(txt1, txt2, txt3, sep = "\n"))

当我尝试打印txt时,它显示为NULL因为 的输出cat未分配给txt. 我尝试过使用capture.output(cat(paste(txt1, txt2, txt3, sep = "\n"))),但这会将行中断到列表中的不同条目。

在 R 中创建动态多行文本似乎没有一个简单的解决方案。或者,我错过了什么?

标签: rstringdynamic

解决方案


这里的根本问题cat是用于在屏幕上显示文本或输出到文本文件(或其他连接)。尝试保存cat类似的输出时:

out <- cat("blah")

没有任何东西返回分配给 out。根据帮助文件?cat

价值:

无(不可见的“NULL”)。

paste适合用于将字符串连接在一起,包括换行符(\n在 R 中的命令行上显示时表示)。

x <- "line one"
y <- "line two"

paste(x,y,sep="\n")
#[1] "line one\nline two"

虽然这看起来不像它应该出现在命令行上,并且全部出现在一行上,但它实际上是您想要的。实际上,您实际上可以cat再次使用来检查格式化输出最终在您的图表上的外观:

cat(paste(x,y,sep="\n"))
#line one
#line two 

推荐阅读