我有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列。
提前谢谢
答案 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.frames
和lapply
的组合来提取和重新组合每个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.frames
和lapply
:
get