0

名前の配列と、データ フレームを返す関数があります。この配列とデータフレームを結合したい。例:

>mynames<-c("a", "b", "c")
>df1 <- data.frame(val0=c("d", "e"),val1=4:5)
>df2 <- data.frame(val1=c("e", "f"),val2=5:6)
>df3 <- data.frame(val2=c("f", "g"),val3=6:7)

私が欲しいのは、この配列をデータフレームと結合するデータフレームです。df1 は「a」に対応し、df2 は「b」に対応します。したがって、最終的なデータ フレームは次のようになります。

Names Var    Val
a     d      4
a     e      5
b     e      5
b     f      6
c     f      6
c     g      7

誰かがこれについて私を助けることができますか?

ありがとう。

4

1 に答える 1

2

これはこの特定の質問に答えますが、実際の問題にどれだけ役立つかはわかりません:

myList <- list(df1, df2, df3)
do.call(rbind, 
        lapply(seq_along(mynames), function(x) 
          cbind(Names = mynames[x], setNames(myList[[x]], 
                                             c("Var", "Val")))))
#   Names Var Val
# 1     a   d   4
# 2     a   e   5
# 3     b   e   5
# 4     b   f   6
# 5     c   f   6
# 6     c   g   7

ここでは、 のリストを作成しdata.framelapply呼び出しで、新しい「名前」列を追加し、既存の列の名前を変更して、rbindそれらをすべてまとめて使用できるようにします。

于 2013-04-30T05:25:54.280 に答える