【发布时间】:2016-04-23 03:28:03
【问题描述】:
我一直在徒劳地寻找一种解决方案,以有效地将来自不同数据帧或来自同一列表中的不同对象的特定列组合到新数据帧中。我有 5 个数据框,它们都具有相同的行名(例如 x、y、z)和相同的列名(V1、V2、V3、...V1000)。
V1 V2 V3 V4... V1 V2 V3 V4...
x 1 5 8 9 x 2 7 9 5
y 2 7 4 8 y 4 6 5 6
z 4 4 5 9 z 3 4 8 7
我需要做的是从所有五个帧中提取 V1 并使用这五个 V1 列创建一个新的数据帧,然后对剩余的 V2-V1000 执行相同操作以获得如下内容:
V1 V1 V1 V1 V1 V2 V2 V2 V2 V2
x 1 5 8 9 5 x 2 7 9 5 5
y 2 7 4 8 8 y 4 6 5 6 4
z 4 4 5 9 7 z 3 4 8 7 7
最终,我需要对所有 1000 个新创建的数据帧应用另一个函数,因此如果有办法循环此合并过程并将 1000 个新帧放入一组新帧中,那将是理想的。
我尝试了各种形式的合并、cbind、sapply 和其他我在此处和网络其他地方找到的建议解决方案。我能想到的最好的方法是将所有五个数据帧放入一个列表中,然后使用 sapply 使用 sapply(y, "[[",2) 合并每个对象的 V1其中 y 是列表,2 对应于每个对象中的 V1 列。但是,我似乎无法得到这个循环。我可以使用此代码手动创建 1000 个新数据帧,但这需要很长时间。
任何可能有效的其他答案的建议或指示将不胜感激!
【问题讨论】: