例如,我有以下列表:如何加入2列出了R中
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")
這與一個在相應的元組B.
一個元素一個元素和列表例如,我有以下列表:如何加入2列出了R中
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")
這與一個在相應的元組B.
一個元素一個元素和列表肯定還有其他的方法可以做到這一點,但以下是使用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"
我們可以使用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"
你舉的例子還不清楚([使用'dput'(http://stackoverflow.com/questions/5963269/how-to-make-a -great-r-reproducible-example#5963610)),但是如果你有一個列表列,你可以使用'tidyr :: unnest',例如'庫(tidyverse); df < - data_frame(A = c('a','b'),B = list(1:2,3:5)); df%>%unnest()' – alistaire