在列表中包括列表

时间:2018-12-05 09:45:14

标签: r

我正在尝试使用tohave变量来重新创建helpers列表。
知道我不知道辅助变量的长度

# The list I want to create
tohave <- list(
    list(var1 = "A", var2 = 1),
    list(var1 = "B", var2 = 2),
    list(var1 = "C", var2 = 3),
    list(var1 = "D", var2 = 4),
    list(var1 = "E", var2 = 5),
    list(var1 = "F", var2 = 6),
    list(var1 = "G", var2 = 7),
    list(var1 = "H", var2 = 8),
    list(var1 = "I", var2 = 9),
    list(var1 = "J", var2 = 10)
)

# 'Helpers' variables I want to use to recreate tohave
helper1 <- list(
    list(var1 = "B", var2 = 2),
    list(var1 = "C", var2 = 3)
)

helper2 <- list(
    list(var1 = "H", var2 = 8),
    list(var1 = "I", var2 = 9)
)

tohave2 <- list(
    list(var1 = "A", var2 = 1),
    helper1,
    list(var1 = "D", var2 = 4),
    list(var1 = "E", var2 = 5),
    list(var1 = "F", var2 = 6),
    list(var1 = "G", var2 = 7),
    helper2,
    list(var1 = "J", var2 = 10)
)

最后,我需要完全重新创建tohave变量

2 个答案:

答案 0 :(得分:2)

您可以将其他列表包装到列表中,以便它们与助手的形式匹配,然后使用?c

tohave2 <- c(
    list(list(var1 = "A", var2 = 1)),
    helper1,
    list(
        list(var1 = "D", var2 = 4),
        list(var1 = "E", var2 = 5),
        list(var1 = "F", var2 = 6),
        list(var1 = "G", var2 = 7)
    ),
    helper2,
    list(list(var1 = "J", var2 = 10))
    )

identical(tohave, tohave2)

#[1] TRUE

答案 1 :(得分:2)

使用append

的第三个选项
tohave2 <- append(x = tohave2, values = helper1, after = 1)
tohave2 <- append(x = tohave2, values = helper2, after = 7)
identical(tohave, tohave2)
#[1] TRUE

数据

tohave <- list(
  list(var1 = "A", var2 = 1),
  list(var1 = "B", var2 = 2),
  list(var1 = "C", var2 = 3),
  list(var1 = "D", var2 = 4),
  list(var1 = "E", var2 = 5),
  list(var1 = "F", var2 = 6),
  list(var1 = "G", var2 = 7),
  list(var1 = "H", var2 = 8),
  list(var1 = "I", var2 = 9),
  list(var1 = "J", var2 = 10)
)

# 'Helpers' variables I want to use to recreate tohave
helper1 <- list(
  list(var1 = "B", var2 = 2),
  list(var1 = "C", var2 = 3)
)

helper2 <- list(
  list(var1 = "H", var2 = 8),
  list(var1 = "I", var2 = 9)
)

tohave2 <- list(
  list(var1 = "A", var2 = 1),
  # helper1,
  list(var1 = "D", var2 = 4),
  list(var1 = "E", var2 = 5),
  list(var1 = "F", var2 = 6),
  list(var1 = "G", var2 = 7),
  # helper2,
  list(var1 = "J", var2 = 10)
)