2011-11-02 26 views
9

貼り付けにデータフレームを入力したいと思います。そのデータフレームの列を別々に入力したように貼り付けてください。私がこれをやりたい理由は、私のデータフレームにいくつの列があるかわからないからです。ここには2つありますが、任意の数の列を処理する一般的な解決策が必要です。データフレームの貼り付け方法

希望する出力は、次のコードのtest1pasteです。しかし、明示的に列を参照する必要はありません。私のapplyは、列で個別に動作するので、わかりやすく失敗しますが、私が探している解決策を見つけることができます。

> test1 <- 
+ structure(c(42.71, 41.69, 46.95, 48.85, 45.26, 44.71, 43.71, 
+ 42.69, 47.95, 49.85, 46.26, 45.71), .Dim = c(6L, 2L)) 
> 
> test1paste <- paste(test1[,1],test1[,2], sep = "&") 
> test1paste 
[1] "42.71&43.71" "41.69&42.69" "46.95&47.95" "48.85&49.85" "45.26&46.26" 
[6] "44.71&45.71" 
> 
> apply(test1,MARGIN=2,paste,sep="&") 
    [,1] [,2] 
[1,] "42.71" "43.71" 
[2,] "41.69" "42.69" 
[3,] "46.95" "47.95" 
[4,] "48.85" "49.85" 
[5,] "45.26" "46.26" 
[6,] "44.71" "45.71" 

ありがとうございます!これについて

+0

これはLaTeXと関係がありますか? –

+0

@Romanはい、あなたはそれを推測しました!私は、標準エラーを括弧内の見積もりにしたいので、 'xtable'を使用していません。 –

+0

あなたは開いた本のように私を読んでいます。 :) –

答えて

7

方法:

> apply(test1,1,paste,collapse="&") 
[1] "42.71&43.71" "41.69&42.69" "46.95&47.95" "48.85&49.85" "45.26&46.26" 
[6] "44.71&45.71" 
+0

私はそれがまさに必要なものです。 –

8

あなたの "データフレームは、" 実際に(あなたの例のようにしていないmatrixdata.frameある場合は、直接do.callを使用することができます。

testdf <- as.data.frame(test1) 
do.call(paste, c(testdf, sep="&")) 

をこれが依存しています実際には、data.frameは誉れたlistであり、do.callは引数のリストをとります。私はちょうどsep引数をリストに追加します...

小さな注意:どの列名も "sep"または "collapse"であれば問題になる可能性があります。カラム名を削除すると、その場合に役立ちます:

do.call(paste, c(unname(testdf), sep="&")) 
+0

ありがとうございます!私は 'do.call'を学ぶ必要があります。非常に便利だと思います。そして、私が興味を持っていた明示的でない例として行列を使用することをお詫び申し上げます。あなたの慎重な解決に感謝します。 –

関連する問題