qfazille
qfazille

Reputation: 1671

Include list(s) in list

I'm trying to recreate the tohave list but using the helpers variable.
Knowing that I don't know the length of helpers variables.

# 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)
)

At the end I need to recreate exactly the tohave variable

Upvotes: 3

Views: 147

Answers (2)

Andre Elrico
Andre Elrico

Reputation: 11480

you can wrap the other lists into lists so they match the form of the helpers, then use ?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

Upvotes: 2

markus
markus

Reputation: 26343

A third option using append

tohave2 <- append(x = tohave2, values = helper1, after = 1)
tohave2 <- append(x = tohave2, values = helper2, after = 7)
identical(tohave, tohave2)
#[1] TRUE

data

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)
)

Upvotes: 2

Related Questions