Rの「行単位」操作でベクトルの各行を文字列に変換しますか?私が欲しいものR:ベクトル要素を行単位で結合するベクトル行を文字列に変換する
> d= cbind("Data", c("2", "73"))
> d
[,1] [,2]
[1,] "Data" "2"
[2,] "Data" "73"
は
[,1]
[1,] "Data 2"
[2,] "Data 73"
のような文字列を取得することである行でアイテムを結合する簡単な方法はありますか?
Rの「行単位」操作でベクトルの各行を文字列に変換しますか?私が欲しいものR:ベクトル要素を行単位で結合するベクトル行を文字列に変換する
> d= cbind("Data", c("2", "73"))
> d
[,1] [,2]
[1,] "Data" "2"
[2,] "Data" "73"
は
[,1]
[1,] "Data 2"
[2,] "Data 73"
のような文字列を取得することである行でアイテムを結合する簡単な方法はありますか?
はい、あります。
apply(d,1,paste,collapse=" ")
[1] "Data 2" "Data 73"
# convert to matrix using as.matrix to get exactly your solution
が
?paste
で簡単グラッセ後
?apply
と
?paste
を参照してください;-)「適用」と呼ばれ、それがapply
が与えられた例のために必要されていないことは明らかです。しかし、いくつかの列があれば便利です。
> paste(d[,1],d[,2])
[1] "Data 2" "Data 73"
しかし、私は、明示的に行を指定せずに動作する一般的な方法が必要です。申し訳ありませんが、私はそれについて十分明確ではありませんでしたが、適用方法は私がする必要があるために非常にうまく機能します。 – gakera
+1:非常に真実。 –
?apply
に頼らずにそれを行うための一般的な方法:添字を回避するために使用されas.data.frame
do.call(paste, as.data.frame(d))
[1] "Data 2" "Data 73"
。
編集:
do.call
は最初の引数、及び第二引数としてリストとして他の関数を取る関数です。これは関数の引数のリストを(関数の場合はd
〜paste()
の列)送信するためによく使用されます。このトリックを動作させるためにdをdata.frame(リストの一種)として送ります。
それは本当です。データがすでにdata.frameの場合は効率が向上しますが、ベクトルの場合は 'apply()'の方がはるかに高速です。この方法の利点は、貼り付けを適用するときに単一のデータ型に制限する必要がないことですが、多くの短所もあります。たとえば、列の代わりに行を貼り付けるなど、 'apply()これは大きなコード変更が必要です。全体として、このソリューションは、私が 'expand.grid()'を使ってインデックスを作成し、これらを 'do.call(paste)'と連結した私の典型的な使用例のためだけです。 –
blarg、もちろん、適用、duh :(しかし、ペースト、崩壊= "私は決して考えていないでしょう): – gakera
@gakera:'崩壊= ""部分を理解するのはかなり簡単ですあなたが '?paste'文書を読んでいるならば。 –
ヘルプには少なくとも私のバージョンではないcollapse = ""の使用例は含まれていません。しかし、テキストから、あなたがすべての騒音でそれを見たら、それが何をするかはちょっと分かります。 – gakera