在 R 中按列组合两个列表列表
Combining two lists of lists column wise in R
我正在处理两个单独的数据框列表列表。它们的尺寸完全相同。我正在尝试将每个数据框(驻留在列表的列表中)与另一个数据框(驻留在列表的另一个列表中)组合起来。我相信我需要使用 mapply 和 sapply 的某种组合,但我无法弄清楚。这是我目前所拥有的:
mapply(function(x,y) { sapply(cbind) }, x = e06_bl, Y = e06_cos)
下面将为您提供一些与我正在使用的数据类似的示例数据。 list1
和 list2
是我正在使用的。 desired_list
是我想要完成的。
df1_subA <- data.frame(sub = rep(1,3), val1 = round(rnorm(1:3),3))
df2_subA <- data.frame(sub = rep(1,5), val1 = round(rnorm(1:5),3))
df1_subB <- data.frame(sub = rep(2, 3), val1 = round(rnorm(1:3),3))
df2_subB <- data.frame(sub = rep(2,6), val1 = round(rnorm(1:6),3))
vec1_subA <-sample(3)
vec2_subA <- sample(5)
vec1_subB <- sample(3)
vec2_subB <- sample(6)
list1 <- list(list(df1_subA, df2_subA), list(df1_subB, df2_subB))
list2 <- list(list(vec1_subA, vec2_subA), list(vec1_subB, vec2_subB))
desired_list <- list(list(cbind(df1_subA, val2 = vec1_subA), cbind(df2_subA, val2 = vec2_subA)), list(cbind(df1_subB, val2 = vec1_subB), cbind(df2_subB, val2 = vec2_subB)))
lapply(X = 1:length(list1), FUN = function(i)
lapply(X = 1:length(list1[[i]]), FUN = function(j) data.frame(list1[[i]][[j]], val2 = list2[[i]][[j]])))
# [[1]]
# [[1]][[1]]
# sub val1 val2
# 1 1 1.817 2
# 2 1 1.642 1
# 3 1 -0.007 3
# [[1]][[2]]
# sub val1 val2
# 1 1 0.314 3
# 2 1 1.527 4
# 3 1 0.327 5
# 4 1 -0.527 2
# 5 1 -0.151 1
# [[2]]
# [[2]][[1]]
# sub val1 val2
# 1 2 -1.694 3
# 2 2 -1.595 2
# 3 2 0.442 1
# [[2]][[2]]
# sub val1 val2
# 1 2 -0.773 2
# 2 2 -0.185 5
# 3 2 0.233 6
# 4 2 1.515 4
# 5 2 0.980 1
# 6 2 2.422 3
我正在处理两个单独的数据框列表列表。它们的尺寸完全相同。我正在尝试将每个数据框(驻留在列表的列表中)与另一个数据框(驻留在列表的另一个列表中)组合起来。我相信我需要使用 mapply 和 sapply 的某种组合,但我无法弄清楚。这是我目前所拥有的:
mapply(function(x,y) { sapply(cbind) }, x = e06_bl, Y = e06_cos)
下面将为您提供一些与我正在使用的数据类似的示例数据。 list1
和 list2
是我正在使用的。 desired_list
是我想要完成的。
df1_subA <- data.frame(sub = rep(1,3), val1 = round(rnorm(1:3),3))
df2_subA <- data.frame(sub = rep(1,5), val1 = round(rnorm(1:5),3))
df1_subB <- data.frame(sub = rep(2, 3), val1 = round(rnorm(1:3),3))
df2_subB <- data.frame(sub = rep(2,6), val1 = round(rnorm(1:6),3))
vec1_subA <-sample(3)
vec2_subA <- sample(5)
vec1_subB <- sample(3)
vec2_subB <- sample(6)
list1 <- list(list(df1_subA, df2_subA), list(df1_subB, df2_subB))
list2 <- list(list(vec1_subA, vec2_subA), list(vec1_subB, vec2_subB))
desired_list <- list(list(cbind(df1_subA, val2 = vec1_subA), cbind(df2_subA, val2 = vec2_subA)), list(cbind(df1_subB, val2 = vec1_subB), cbind(df2_subB, val2 = vec2_subB)))
lapply(X = 1:length(list1), FUN = function(i)
lapply(X = 1:length(list1[[i]]), FUN = function(j) data.frame(list1[[i]][[j]], val2 = list2[[i]][[j]])))
# [[1]]
# [[1]][[1]]
# sub val1 val2
# 1 1 1.817 2
# 2 1 1.642 1
# 3 1 -0.007 3
# [[1]][[2]]
# sub val1 val2
# 1 1 0.314 3
# 2 1 1.527 4
# 3 1 0.327 5
# 4 1 -0.527 2
# 5 1 -0.151 1
# [[2]]
# [[2]][[1]]
# sub val1 val2
# 1 2 -1.694 3
# 2 2 -1.595 2
# 3 2 0.442 1
# [[2]][[2]]
# sub val1 val2
# 1 2 -0.773 2
# 2 2 -0.185 5
# 3 2 0.233 6
# 4 2 1.515 4
# 5 2 0.980 1
# 6 2 2.422 3