2016-10-24 7 views
1

私はxts、動物園のクラスと105のデータフレームを持っていると私はそれらの6番目の列をデータフレームに結合したい。ループを使用して多数のデータフレームをcbindする方法は?

mydata <- AAL 

for (i in 2:105) { 
    k <- top100[i,1] # The first column contains all the data frame names 
    mydata <- cbind(mydata, k) 
} 

それは明らかに間違っているのですが、私はどちらかの方法をCBINDするので、多くの見当がつかない:

だから、私はすべてのデータフレーム名が関数「は」とそれを使用するために含まれているデータフレームを作成しました全く異なる名前のデータフレーム(私のデータフレーム名はNASDAQシンボルです)、どのように6列目を選ぶか

はforeachのパッケージを試してみて、事前

+0

は 'CBIND(mydataに、(k)を取得する)' – HubertL

+1

あなたは(http://stackoverflow.com/a/24376207/903061)[データフレームのリスト]を使用する必要がありますしてみてください。 – Gregor

答えて

3

でいただきありがとうございます。この作業を行うよりエレガントな方法があるかもしれませんが、このアプローチはうまくいくでしょう。

library(foreach) 
    #create simple data frames with columns named 'A' and 'B' 
    df1<-t(data.frame(1,2,3)) 
    df2<-t(data.frame(4,5,6)) 
    colnames(df1)<-c('A') 
    colnames(df2)<-c('B') 
    #make a list 
    dfs<-list(df1,df2) 
    #join data frames column by column, this will preserve their names 
    foreach(x=1:2 
      ,.combine=cbind)%do% # don`t forget this directive 
    { 
     dfs[[x]] 
    } 

結果は次のようになります。

 A B 
    X1 1 4 
    X2 2 5 
    X3 3 6 

が列番号6を選択するには:

df[,6] 
+0

予期せずうまく動きました!!!! :Dありがとうございます –

0

まず、あなたはリストにあなたのdata.framesのすべてを保存する必要があります。その後、data.framesのそれぞれの第六列を抽出して再結合するlapplydo.callの組み合わせを使用することができます。リストにあなたの既存のdata.framesのすべてを取得する

# Create sample data 
df_list <- lapply(1:105, function(x) { 
    as.data.frame(matrix(sample(1:1000, 100), ncol = 10)) 
}) 

# Extract the sixth column from each data.frame 
extracted_cols <- lapply(df_list, function(x) x[6]) 

# Combine all of the columns together into a new data.frame 
result <- do.call("cbind", extracted_cols) 

一つの方法は、getとともにlapplyを使用することです:

df_list <- lapply(top100[[1]], get) 
関連する問題