2017-01-23 12 views
2

私はすべて同じベクトル名を持つ複数のデータフレームを持っており、私は共通パターンを持つすべてをcbindしたいとします。したがって、これらの3つのデータフレームのために:データフレーム名の共通パターンに基づくrbindデータフレーム

df.1 <- data.frame(column1 = factor(sample(c("Male","Female"), 10, replace=TRUE)), 
        speed=runif(10)) 
df.2 <- data.frame(column1 = factor(sample(c("Male","Female"), 10, replace=TRUE)), 
        speed=runif(10)) 
df.3 <- data.frame(column1 = factor(sample(c("Male","Female"), 10, replace=TRUE)), 
        speed = runif(10)) 

私は一般的なパターンを持つにrbindすべてたい

は私がリストを作成し、この使用してからのデータフレームを作成しようとした「DFを*。」:

temp <- lapply(ls(pattern = "df.*"), get) 
temp2<- as.data.frame(temp) 

しかし、これは唯一の6列が効果的に全体のことをcbindingではなくrbindingのデータフレームを生成します。

答えて

4

我々はmget

library(data.table) 
rbindlist(mget(ls(pattern = "^df\\.\\d+"))) 

またはでlsを使用することができますdplyr

library(dplyr) 
mget(ls(pattern="^df\\.\\d+")) %>% 
       bind_rows() 

それともbase R

から rbind
do.call(rbind, mget(ls(pattern="^df\\.\\d+"))) 
+0

パーフェクトを、ありがとうございました。質問:なぜ "" df。* "'ではなく "" df \\。\\ d + "'を使うのですか? –

+0

@JojoOnoあなたが作成したオブジェクト、 'df.1'、' df.2'、 'df.3'などに基づいて、私はパターンが非常に具体的であると考えました。つまり、開始時('^')に 'df'文字列に続いて '.'(これは、任意の文字を意味するメタキャラクタであるので、エスケープ(' \\ 'it)し、その後に1つ以上の数字(' \\ d + ')を付けることができます) – akrun

+0

地球環境のどこでも発生している '' df。 ''がある他のオブジェクトを付ける可能性がありますか? –

1

あなたが試すことができます。

new_df <- do.call("rbind",mget(ls(pattern = "^df.*"))) 
関連する問題