我在另一个名为“index”的数据框中创建了一个索引
I1 I2 I3 ...
1 3 5
2 4 6
3 5 7
我想将其他数据框分组,并将每个结果存储为单独的数据框
column_name_from_index <- main_df[index[,i], ]
所以最终的结果是我将main_df索引为索引列,输出是数据帧I1,I2,I3等等。我不愿意分裂我的结果(我现在不是在抓住列名,但我想建议如何做到这一点。)
s <- seq(1,30)
df <- main_df[FALSE, ] #creates an empty dataframe into which I can put all columns from main_df.
for(i in s){
df <- main_df[index[,i], ]
df[i, ]
}
答案 0 :(得分:0)
如果您使用list
而不是单独的数据框,这将更加明确。正如Jaap所示,lapply
对此很容易,我们可以命名结果:
index = data.frame(I1 = 1:3, I2 = 3:5)
main_df = data.frame(x = 1:6, y = 2:7)
result = lapply(index, function(i) main_df[i, ])
names(result) = names(index)
result
# $I1
# x y
# 1 1 2
# 2 2 3
# 3 3 4
#
# $I2
# x y
# 3 3 4
# 4 4 5
# 5 5 6
您可以按号码或名称访问各个数据框,例如result[["I2"]]
或result[[2]]
。请参阅How to make a list of data frames?,详细了解为什么这比单个数据框更好(还有将列表转换为特殊顽固或自虐的个别数据框的提示)。