如何在message()中的引号内打印变量

时间:2012-06-24 16:23:40

标签: r

我有以下变量:

min.v<-5
max.v<-10

我想发消息如下

Test this. You entered "5 10" 

是否可以使用message()paste()打印此内容,因为这两个函数都将引号视为字符串。 邮件中的变量应在双引号内

我尝试了message(as.character(paste(min.v, " ",max.v))),但双引号被忽略了。

这个问题可能与此Solve the Double qoutes within double quotes issue in R

完全相反

3 个答案:

答案 0 :(得分:8)

你有两个三个选项

选项1:逃避报价。为此,您必须使用\"

cat("You entered ", "\"", min.v, " ", max.v,"\"", sep="")
You entered "5 10"

选项2:将双引号嵌入单引号中:

cat("You entered ", '"', min.v, " ", max.v,'"', sep="")
You entered "5 10"

修改 并确认@baptiste,努力使此答案更全面

选项3:使用函数dQuote()

options(useFancyQuotes=FALSE)
cat("You entered ", dQuote(paste(min.v, max.v)), sep="")
You entered "5 10"

答案 1 :(得分:4)

x = 5; y = "indeed"
message("you entered ", dQuote(x))
message("you entered ", dQuote(paste(x, y)))

答案 2 :(得分:0)

虽然sprintf可能变得非常复杂,但我发现代码通常比大多数其他选项更整洁。基本上,您有一条消息要格式化您要插入变量值的位置 - 这是sprintf的用途:

min.v <- 5
max.v <- 10
msg <- 'Test this. You entered "%i %i"\n'
str <- sprintf(msg, min.v, max.v) #generates string
cat(str) #to output
# or message(str)

%i是期​​望整数值的占位符,有关详细信息,请参阅?sprintf。虽然此解决方案仍然依赖于带有单引号的周围双引号,但与直接使用pastecat相比,您可以获得更加可读的代码。