将两个元素列表合并为一个元素,每个元素具有相同的元素但每个元素有两个变量

时间:2018-06-18 18:44:44

标签: r list nested-lists

我有两个48个元素的列表。列表中的每个元素都有一个变量(下面的DiffINT或DiffEXT),具有不同的观察数。两个列表中所有元素的名称都相同。

我想要做的是根据元素名称合并两个元素列表,最后每个元素有两个变量。

奖金问题:我有两个48个元素的列表,两个列表都有相同的元素。一个列表有一个变量,其中有一个观察值,另一个列表为每个元素六个变量,具有不同的观察数量。我可以以某种方式合并这些以实现与上述相同吗?

我已经回顾了其他问题并尝试了append()和cbind()以及其他功能,但是没有一个能达到我想要的效果。我正在寻找的例子如下。

> str(DiffsMerged)
List of 48
 $ Element1:List of 2
  ..$ DiffINT : num 1 0.642 0.27 -0.102 -0.123 ...
  ..$ DiffEXT : num 1 0.1397 -0.1045 -0.0751 -0.1414 ...
 $ Element 2:List of 2
  ..$ DiffINT : num  1 0.5842 0.3453 0.158 -0.0259 ...
  ..$ DiffEXT : num 1 -0.0312 -0.0321 -0.033 -0.0339 ...
 $ Element 3:List of 2
  ..$ DiffINT : num 1 0.908 0.816 0.724 0.632 ...
  ..$ DiffEXT : num 1 0.584 0.21 -0.163 -0.406 

非常感谢提前。

编辑添加:每当我想查看单个列表(DiffINT和DiffEXT)时,我都会收到以下错误。想法?

 > View(DiffEXT)
 Error in if (more || nchar(output) > 80) { : 
   missing value where TRUE/FALSE needed

1 个答案:

答案 0 :(得分:0)

你可以得到一个简单的"合并"使用this.logger('update')循环:

lapply

我不知道您打算如何使用这些数据,但它可能有助于保留它tidy。只有在两个列表具有相同名称且所有元素具有相同长度时才执行此操作。

all_names <- union(names(DiffINT), names(DiffEXT))
DiffsMerged <- lapply(
  X   = all_names,
  FUN = function(name) {
    list(DiffINT[[name]], DiffEXT[[name]])
  }
)
names(DiffsMerged) <- all_names
str(DiffsMerged)
# List of 3
#  $ Element1:List of 2
#   ..$ : num [1:5] 1 0.642 0.27 -0.102 -0.123
#   ..$ : num [1:5] 1 0.1397 -0.1045 -0.0751 -0.1414
#  $ Element2:List of 2
#   ..$ : num [1:5] 1 0.1397 -0.1045 -0.0751 -0.1414
#   ..$ : num [1:5] 1 -0.0312 -0.0321 -0.033 -0.0339
#  $ Element3:List of 2
#   ..$ : num [1:5] 1 0.908 0.816 0.724 0.632
#   ..$ : num [1:5] 1 0.584 0.21 -0.163 -0.406