【问题标题】:Combining two lists of lists column wise in R在R中按列组合两个列表列表
【发布时间】:2017-12-10 22:05:40
【问题描述】:

我正在处理两个单独的数据框列表列表。它们的尺寸完全相同。我正在尝试将每个数据框(位于列表的列表中)与另一个数据框(位于列表的另一个列表中)结合起来。我相信我需要使用 mapply 和 sapply 的某种组合,但我无法弄清楚。这是我目前所拥有的:

mapply(function(x,y) { sapply(cbind) }, x = e06_bl, Y = e06_cos)

下面将为您提供一些类似于我正在使用的示例数据。 list1list2 是我正在使用的。 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)))

【问题讨论】:

  • 感谢您告诉我。我对这个社区很陌生,并没有问太多问题。希望这有助于澄清事情。 @d.b

标签: r nested-lists sapply mapply


【解决方案1】:
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

【讨论】:

  • X = 1:2 究竟代表什么?一个问题是我不能假设每个嵌套列表都包含两个数据框。有没有办法在该变量没有硬编码的情况下对其进行编辑?
猜你喜欢
  • 2016-08-08
  • 2018-11-17
  • 2020-07-19
  • 2012-03-20
  • 1970-01-01
  • 1970-01-01
  • 2015-07-12
  • 1970-01-01
  • 2018-05-20
相关资源
最近更新 更多