2010-11-18 9 views

答えて

18

はい、あります。

apply(d,1,paste,collapse=" ") 
[1] "Data 2" "Data 73" 
# convert to matrix using as.matrix to get exactly your solution 

?pasteで簡単グラッセ後 ?apply?paste

+0

blarg、もちろん、適用、duh :(しかし、ペースト、崩壊= "私は決して考えていないでしょう): – gakera

+0

@gakera:'崩壊= ""部分を理解するのはかなり簡単ですあなたが '?paste'文書を読んでいるならば。 –

+0

ヘルプには少なくとも私のバージョンではないcollapse = ""の使用例は含まれていません。しかし、テキストから、あなたがすべての騒音でそれを見たら、それが何をするかはちょっと分かります。 – gakera

3

を参照してください;-)「適用」と呼ばれ、それがapplyが与えられた例のために必要されていないことは明らかです。しかし、いくつかの列があれば便利です。

> paste(d[,1],d[,2]) 
[1] "Data 2" "Data 73" 
+0

しかし、私は、明示的に行を指定せずに動作する一般的な方法が必要です。申し訳ありませんが、私はそれについて十分明確ではありませんでしたが、適用方法は私がする必要があるために非常にうまく機能します。 – gakera

+0

+1:非常に真実。 –

1

?applyに頼らずにそれを行うための一般的な方法:添字を回避するために使用されas.data.frame

do.call(paste, as.data.frame(d)) 
[1] "Data 2" "Data 73" 

編集:

do.callは最初の引数、及び第二引数としてリストとして他の関数を取る関数です。これは関数の引数のリストを(関数の場合はdpaste()の列)送信するためによく使用されます。このトリックを動作させるためにdをdata.frame(リストの一種)として送ります。

+0

それは本当です。データがすでにdata.frameの場合は効率が向上しますが、ベクトルの場合は 'apply()'の方がはるかに高速です。この方法の利点は、貼り付けを適用するときに単一のデータ型に制限する必要がないことですが、多くの短所もあります。たとえば、列の代わりに行を貼り付けるなど、 'apply()これは大きなコード変更が必要です。全体として、このソリューションは、私が 'expand.grid()'を使ってインデックスを作成し、これらを 'do.call(paste)'と連結した私の典型的な使用例のためだけです。 –

関連する問題