在 R 中交错 data.frames 中的两个 data.frames
Interleaving two data.frames of data.frames in R
我在 R 中有两个数据帧列表。我希望两组中的每个数据帧相互交错,以便第一个列表中的第一个数据帧与第二个列表中的第一个数据帧交错。
它们都有相同的列名。它们看起来像这样:
ind_1 ind_2 ind_3 ind_4 ind_5 ind_6 ind_7 ind_8 ind_9 ind_10 ind_11 ind_12 ind_13 ind_14 ind_15 ind_16
1 0 0 0 0 0 0 0 0 1 1 0 0 1 0 1 0
2 0 0 0 0 0 0 0 0 1 1 0 0 1 1 0 0
3 0 0 0 0 0 0 0 0 1 1 0 0 0 1 1 0
4 32 30 35 26 31 35 15 28 26 16 23 32 21 0 25 35
5 32 30 35 26 31 0 15 28 26 16 23 32 21 27 25 35
6 32 30 35 26 31 35 15 28 26 16 23 32 21 27 25 35
7 32 30 35 26 31 35 15 28 26 16 23 32 21 27 25 35
8 32 30 35 26 31 35 15 28 26 16 23 32 21 27 25 35
9 32 30 35 26 31 35 15 28 26 16 23 32 21 27 25 35
所有文件都非常相似,所以如果要测试这个文件,您可以反复使用这个文件。目标是:
ind_1 ind_2 ind_3 ind_4 ind_5 ind_6 ind_7 ind_8 ind_9 ind_10 ind_11 ind_12 ind_13 ind_14 ind_15 ind_16
1 0 0 0 0 0 0 0 0 1 1 0 0 1 0 1 0
1 0 0 0 0 0 0 0 0 1 1 0 0 1 0 1 0
2 0 0 0 0 0 0 0 0 1 1 0 0 1 1 0 0
2 0 0 0 0 0 0 0 0 1 1 0 0 1 1 0 0
3 0 0 0 0 0 0 0 0 1 1 0 0 0 1 1 0
3 0 0 0 0 0 0 0 0 1 1 0 0 0 1 1 0
4 32 30 35 26 31 35 15 28 26 16 23 32 21 0 25 35
4 32 30 35 26 31 35 15 28 26 16 23 32 21 0 25 35
5 32 30 35 26 31 0 15 28 26 16 23 32 21 27 25 35
5 32 30 35 26 31 0 15 28 26 16 23 32 21 27 25 35
我将 R 索引行号留在那里,因为它在此可视化中使列保持直线,但无关紧要(最左侧的 1,1 2,2 等)。
它与一个 data.frame 一起工作得很好,但不适用于数据帧列表。这是我试过的:
interleaved <- lapply(new_list, function(y)
{y<-interleave(y,second_list)})
其中一个数据框列表被命名为 new_list,另一个被命名为 second_list。我也试过:
interleaved <- lapply(new_list, second_list, function(x,y)
{y<-interleave(x,y)})
如果有人知道如何解决这个问题,将不胜感激。
我们需要使用 Map
来 interleave
ing 两个 list
s
的相应元素
library(gdata)
out_lst <- Map(interleave, new_list, second_list)
或者另一个选项是 map2
来自 purrr
library(purrr)
out_lst <- map2(new_list, second_list, interleave)
我在 R 中有两个数据帧列表。我希望两组中的每个数据帧相互交错,以便第一个列表中的第一个数据帧与第二个列表中的第一个数据帧交错。
它们都有相同的列名。它们看起来像这样:
ind_1 ind_2 ind_3 ind_4 ind_5 ind_6 ind_7 ind_8 ind_9 ind_10 ind_11 ind_12 ind_13 ind_14 ind_15 ind_16
1 0 0 0 0 0 0 0 0 1 1 0 0 1 0 1 0
2 0 0 0 0 0 0 0 0 1 1 0 0 1 1 0 0
3 0 0 0 0 0 0 0 0 1 1 0 0 0 1 1 0
4 32 30 35 26 31 35 15 28 26 16 23 32 21 0 25 35
5 32 30 35 26 31 0 15 28 26 16 23 32 21 27 25 35
6 32 30 35 26 31 35 15 28 26 16 23 32 21 27 25 35
7 32 30 35 26 31 35 15 28 26 16 23 32 21 27 25 35
8 32 30 35 26 31 35 15 28 26 16 23 32 21 27 25 35
9 32 30 35 26 31 35 15 28 26 16 23 32 21 27 25 35
所有文件都非常相似,所以如果要测试这个文件,您可以反复使用这个文件。目标是:
ind_1 ind_2 ind_3 ind_4 ind_5 ind_6 ind_7 ind_8 ind_9 ind_10 ind_11 ind_12 ind_13 ind_14 ind_15 ind_16
1 0 0 0 0 0 0 0 0 1 1 0 0 1 0 1 0
1 0 0 0 0 0 0 0 0 1 1 0 0 1 0 1 0
2 0 0 0 0 0 0 0 0 1 1 0 0 1 1 0 0
2 0 0 0 0 0 0 0 0 1 1 0 0 1 1 0 0
3 0 0 0 0 0 0 0 0 1 1 0 0 0 1 1 0
3 0 0 0 0 0 0 0 0 1 1 0 0 0 1 1 0
4 32 30 35 26 31 35 15 28 26 16 23 32 21 0 25 35
4 32 30 35 26 31 35 15 28 26 16 23 32 21 0 25 35
5 32 30 35 26 31 0 15 28 26 16 23 32 21 27 25 35
5 32 30 35 26 31 0 15 28 26 16 23 32 21 27 25 35
我将 R 索引行号留在那里,因为它在此可视化中使列保持直线,但无关紧要(最左侧的 1,1 2,2 等)。
它与一个 data.frame 一起工作得很好,但不适用于数据帧列表。这是我试过的:
interleaved <- lapply(new_list, function(y)
{y<-interleave(y,second_list)})
其中一个数据框列表被命名为 new_list,另一个被命名为 second_list。我也试过:
interleaved <- lapply(new_list, second_list, function(x,y)
{y<-interleave(x,y)})
如果有人知道如何解决这个问题,将不胜感激。
我们需要使用 Map
来 interleave
ing 两个 list
s
library(gdata)
out_lst <- Map(interleave, new_list, second_list)
或者另一个选项是 map2
来自 purrr
library(purrr)
out_lst <- map2(new_list, second_list, interleave)