我有以下变量:
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
完全相反答案 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
。虽然此解决方案仍然依赖于带有单引号的周围双引号,但与直接使用paste
或cat
相比,您可以获得更加可读的代码。