例如,我有以下列表:
A B
"a" c("1","2")
"b" c("3","4","5")
其中A是字符串列表,B是字符串元组列表。 我想要以下列表:
C
c("a","1")
c("a","2")
c("b","3")
c("b","4")
c("b","5")
这是一个列表,其中A中有一个元素,B中相应元组中有一个元素。
答案 0 :(得分:1)
肯定有其他方法可以做到这一点,但这是使用tidyverse
工具解决此问题的方法。希望它有所帮助。
编辑:在您解释数据的结构与我原先的想法不同之后,我更新了答案。
library(dplyr)
library(tidyr)
library(purrr)
A <- list("a", "b")
B <- list(c("1","2"), c("3","4","5"))
C <- tibble(A = as_vector(A), B) %>%
tidyr::unnest(B) %>%
mutate(C = map2(A, B, ~c(.x, .y))) %>%
.[["C"]]
C
#> [[1]]
#> [1] "a" "1"
#>
#> [[2]]
#> [1] "a" "2"
#>
#> [[3]]
#> [1] "b" "3"
#>
#> [[4]]
#> [1] "b" "4"
#>
#> [[5]]
#> [1] "b" "5"
答案 1 :(得分:0)
我们可以使用base R
d1 <- stack(setNames(B, unlist(A)))[2:1]
d1$ind <- as.character(d1$ind)
split(unlist(d1, use.names = FALSE), 1:nrow(d1))
#$`1`
#[1] "a" "1"
#$`2`
#[1] "a" "2"
#$`3`
#[1] "b" "3"
#$`4`
#[1] "b" "4"
#$`5`
#[1] "b" "5"