0

私は次の変数を持っています:

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

そして私は次のメッセージを送りたい

Test this. You entered "5 10" 

どちらの関数も引用符を文字列と見なすため、これをmessage()またはで印刷することは可能ですか。メッセージ内の変数は二重引用符で囲む必要がありますpaste()

試しmessage(as.character(paste(min.v, " ",max.v)))ましたが、二重引用符は無視されます。

この質問は、おそらくこれとは正反対です。Rの二重引用符内の二重引用符を解決する

4

3 に答える 3

8

これを行うには2つの3つのオプションがあります

オプション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"
于 2012-06-24T16:37:47.590 に答える
4
x = 5; y = "indeed"
message("you entered ", dQuote(x))
message("you entered ", dQuote(paste(x, y)))
于 2012-06-24T19:27:20.820 に答える
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直接使用する場合よりもはるかに読みやすいコードが得られます。

于 2018-02-02T15:56:30.650 に答える