Reputation: 1671
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
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
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