如何用循环来绑定许多数据帧?

时间:2016-10-24 19:01:11

标签: r loops dataframe

我有105个数据框,xts,zoo类和II想要将他们的第6列合并到一个数据框中。

因此,我创建了一个包含所有数据框名称的数据框,并将其与'for'函数一起使用:

mydata <- AAL

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

这显然是错误的,但我不知道如何使用完全不同的名称(我的数据框名称是NASDAQ符号)来解决这么多数据框,也不知道如何选择所有数据框的第6列。

提前谢谢

2 个答案:

答案 0 :(得分:3)

尝试使用foreach包。可能有更优雅的方式来完成这项任务,但这种方法可行。

    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]

答案 1 :(得分:0)

首先,您应将所有<bean id="dataSource" class="com.orientechnologies.orient.jdbc.OrientDataSource"> <constructor-arg name="url" value="jdbc:orient:plocal:xx\\databases\\test" /> <constructor-arg name="username" value="xx"/> <constructor-arg name="password" value="xx"/> <constructor-arg name="info" ref="databaseProperties" /> </bean> <util:map id="databaseProperties" value-type="java.lang.String"> <entry key="db.usePool" value="true" /> <entry key="db.pool.min" value="1" /> <entry key="db.pool.max" value="10" /> 存储在列表中。然后,您可以使用data.frameslapply的组合来提取和重新组合每个do.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) 放入列表的一种方法是使用data.frameslapply

get