Rの同じ行に文字列と変数の内容を出力する


198

テキストと変数の内容を同じ行に印刷する方法はありますか?例えば、

wd <- getwd()
print("Current working dir: ", wd)

これを可能にする構文については何も見つかりませんでした。

r  printing 

回答:


299

あなたは使うことができpasteprint

print(paste0("Current working dir: ", wd))

または cat

cat("Current working dir: ", wd)

8
おそらく、そうしないとsep = ''余分なスペースができます。
ハドリー2013年

8
使用して、最後にcat()aを取得しますNULL:(
ragesz

5
:あなたのような印刷の猫の内部置けば@ragesz私は最後のヌルを取得print(cat("test", var)) する必要がありますcat("test", var)
Spidfire

62

{glue}の方が文字列の補間が優れています。他の回答を参照しください。また、ダイニスが正しく述べているように、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))

別の素晴らしいオプション!これは他のスクリプト言語とよく似ており、複数の変数を実装するテキストがある場合に非常に便利です。ありがとう!

1
特に関数の引数を作成している場合は、はるかに便利なオプションです。貼り付けると、すぐに判読不能な混乱になります。
user27636

2
sprintfは印刷しないことに注意してください。文字列をフォーマットするだけです。print(sprintf(...))のようなものがスクリプト内で必要です。
CHS


17

これを行う最も簡単な方法は、 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()


14

{糊}パッケージは、文字列補間を提供します。この例で{wd}は、変数の内容で置き換えられます。複雑な式もサポートされています。

library(glue)

wd <- getwd()
glue("Current working dir: {wd}")
#> Current working dir: /tmp/RtmpteMv88/reprex46156826ee8c

reprexパッケージ(v0.2.1)によって2019-05-13に作成されました

印刷された出力に、他の回答が使用する[1]アーティファクトと"引用が含まれていないことに注意してくださいcat()


8

他のユーザーが言ったように、cat()はおそらく最良のオプションです。

@krlmlrはsprintf()の使用を提案しました。これは現在3番目にランク付けされた回答です。sprintf()は良い考えではありません。Rのドキュメントから:

フォーマット文字列はOSのsprintf関数に渡され、フォーマットが正しくないと、後者がRプロセスをクラッシュさせる可能性があります。

catやその他のオプションよりもsprintf()を使用する正当な理由はありません。


2

paste0またはcatメソッドを使用して、Rの文字列と変数値を組み合わせることができます

例えば:

paste0("Value of A : ", a)

cat("Value of A : ", a)
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.