这是我的列表:
mylist<-
list(list(A = c(30, 50, 35, 25, 45), B = c(40, 35, 35, 50, 45
), C = c(40, 20, 40, 50, 25), D = c(35, 45, 45, 45, 40), E = c(20,
30, 50, 45, 20), F = c(40, 40, 50, 30, 40)), list(A = c(50, 50,
25, 40, 45, 40, 35, 40, 45, 20), B = c(40, 35, 40, 40, 45, 30,
20, 50, 35, 25), C = c(20, 30, 50, 35, 45, 40, 25, 50, 35, 50
), D = c(20, 35, 30, 25, 40, 30, 50, 20, 25, 35), E = c(40, 25,
25, 20, 50, 30, 50, 40, 35, 35), F = c(50, 20, 45, 35, 50, 45,
30, 45, 35, 50)), list(A = c(45, 50, 25, 25, 30, 25, 35, 35,
35, 30, 50, 50, 30, 30, 20), B = c(40, 20, 35, 35, 50, 20, 25,
30, 35, 20, 40, 20, 45, 30, 20), C = c(50, 20, 25, 35, 35, 30,
50, 25, 40, 35, 45, 45, 35, 45, 25), D = c(50, 50, 25, 35, 25,
35, 20, 25, 45, 40, 35, 40, 50, 40, 30), E = c(50, 25, 20, 30,
40, 45, 40, 50, 35, 40, 30, 45, 35, 50, 40), F = c(35, 50, 35,
45, 25, 40, 50, 40, 50, 50, 50, 50, 35, 35, 40)), list(A = c(50,
50, 50, 40, 20, 25, 50, 40, 50, 50, 45, 40, 30, 50, 35, 45, 50,
30, 35, 45), B = c(45, 20, 25, 20, 25, 30, 20, 30, 45, 25, 50,
30, 30, 25, 50, 45, 20, 45, 45, 50), C = c(20, 40, 50, 25, 40,
45, 25, 30, 20, 20, 35, 45, 20, 40, 50, 45, 40, 40, 45, 35),
D = c(40, 40, 20, 25, 50, 50, 35, 45, 50, 45, 50, 35, 30,
40, 35, 45, 25, 45, 45, 25), E = c(20, 25, 35, 45, 35, 40,
40, 35, 35, 40, 30, 30, 40, 50, 25, 40, 30, 25, 20, 40)),
list(A = c(35, 25, 45, 20, 25, 30, 30, 35, 30, 40, 30, 20,
20, 30, 45, 40, 35, 35, 35, 35, 25, 45, 35, 20, 50), B = c(50,
35, 30, 30, 35, 45, 45, 50, 25, 25, 40, 25, 50, 45, 25, 30,
30, 25, 45, 45, 30, 20, 50, 30, 30), C = c(35, 40, 50, 25,
40, 45, 30, 25, 50, 25, 35, 50, 50, 50, 25, 50, 20, 50, 40,
25, 25, 35, 20, 20, 50), D = c(40, 35, 35, 40, 50, 35, 25,
40, 25, 25, 30, 45, 50, 35, 20, 50, 20, 20, 45, 50, 40, 30,
35, 50, 45), E = c(40, 25, 50, 50, 20, 50, 25, 50, 40, 30,
30, 50, 45, 45, 40, 45, 20, 20, 45, 35, 45, 50, 40, 40, 35
), F = c(40, 45, 35, 35, 30, 45, 40, 40, 20, 50, 50, 45,
40, 40, 45, 45, 35, 40, 20, 30, 35, 45, 30, 50, 25)))
我需要将所有“ A”元素发送到第一个列表位置(mylist[[1]]
)。 “ A”元素为:mylist[[1]][[1]],mylist[[2]][[1]],mylist[[3]][[1]],mylist[[4]][[1]],mylist[[5]][[1]]
。
然后,将所有“ B”元素移到第二个列表位置(mylist[[2]]
)。 “ B”元素是:mylist[[1]][[2]],mylist[[2]][[2]],mylist[[3]][[2]],mylist[[4]][[2]],mylist[[5]][[2]]
。
以此类推。
是否可以使用dplyr
软件包来做到这一点?
答案 0 :(得分:3)
purrr::transpose(mylist)
# $A
# $A[[1]]
# [1] 30 50 35 25 45
#
# $A[[2]]
# [1] 50 50 25 40 45 40 35 40 45 20
#
# $A[[3]]
# [1] 45 50 25 25 30 25 35 35 35 30 50 50 30 30 20
#
# $A[[4]]
# [1] 50 50 50 40 20 25 50 40 50 50 45 40 30 50 35 45 50 30 35 45
#
# $A[[5]]
# [1] 35 25 45 20 25 30 30 35 30 40 30 20 20 30 45 40 35 35 35 35 25 45 35 20 50
#
#
# $B
# $B[[1]]
# [1] 40 35 35 50 45
#
# $B[[2]]
# [1] 40 35 40 40 45 30 20 50 35 25
#
# $B[[3]]
# [1] 40 20 35 35 50 20 25 30 35 20 40 20 45 30 20
#
# $B[[4]]
# [1] 45 20 25 20 25 30 20 30 45 25 50 30 30 25 50 45 20 45 45 50
#
# $B[[5]]
# [1] 50 35 30 30 35 45 45 50 25 25 40 25 50 45 25 30 30 25 45 45 30 20 50 30 30
#
#
# $C
# $C[[1]]
# [1] 40 20 40 50 25
#
# $C[[2]]
# [1] 20 30 50 35 45 40 25 50 35 50
#
# $C[[3]]
# [1] 50 20 25 35 35 30 50 25 40 35 45 45 35 45 25
#
# $C[[4]]
# [1] 20 40 50 25 40 45 25 30 20 20 35 45 20 40 50 45 40 40 45 35
答案 1 :(得分:0)
这是您要找的吗?
dplyr::bind_rows(mylist, .id = 'id')
# A tibble: 75 x 7
id A B C D E F
<chr> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
1 1 30 40 40 35 20 40
2 1 50 35 20 45 30 40
3 1 35 35 40 45 50 50
4 1 25 50 50 45 45 30
5 1 45 45 25 40 20 40
6 2 50 40 20 20 40 50
7 2 50 35 30 35 25 20
8 2 25 40 50 30 25 45
9 2 40 40 35 25 20 35
10 2 45 45 45 40 50 50
# ... with 65 more rows
或者同一件事转换回list
形式:
dplyr::bind_rows(mylist, .id = 'id') %>% as.list()
$id
[1] "1" "1" "1" "1" "1" "2" "2" "2" "2" "2" "2" "2" "2" "2" "2" "3" "3" "3" "3" "3" "3" "3" "3" "3" "3" "3" "3" "3" "3" "3" "4" "4" "4" "4" "4" "4" "4" "4"
[39] "4" "4" "4" "4" "4" "4" "4" "4" "4" "4" "4" "4" "5" "5" "5" "5" "5" "5" "5" "5" "5" "5" "5" "5" "5" "5" "5" "5" "5" "5" "5" "5" "5" "5" "5" "5" "5"
$A
[1] 30 50 35 25 45 50 50 25 40 45 40 35 40 45 20 45 50 25 25 30 25 35 35 35 30 50 50 30 30 20 50 50 50 40 20 25 50 40 50 50 45 40 30 50 35 45 50 30 35 45 35
[52] 25 45 20 25 30 30 35 30 40 30 20 20 30 45 40 35 35 35 35 25 45 35 20 50
$B
[1] 40 35 35 50 45 40 35 40 40 45 30 20 50 35 25 40 20 35 35 50 20 25 30 35 20 40 20 45 30 20 45 20 25 20 25 30 20 30 45 25 50 30 30 25 50 45 20 45 45 50 50
[52] 35 30 30 35 45 45 50 25 25 40 25 50 45 25 30 30 25 45 45 30 20 50 30 30
$C
[1] 40 20 40 50 25 20 30 50 35 45 40 25 50 35 50 50 20 25 35 35 30 50 25 40 35 45 45 35 45 25 20 40 50 25 40 45 25 30 20 20 35 45 20 40 50 45 40 40 45 35 35
[52] 40 50 25 40 45 30 25 50 25 35 50 50 50 25 50 20 50 40 25 25 35 20 20 50
$D
[1] 35 45 45 45 40 20 35 30 25 40 30 50 20 25 35 50 50 25 35 25 35 20 25 45 40 35 40 50 40 30 40 40 20 25 50 50 35 45 50 45 50 35 30 40 35 45 25 45 45 25 40
[52] 35 35 40 50 35 25 40 25 25 30 45 50 35 20 50 20 20 45 50 40 30 35 50 45
$E
[1] 20 30 50 45 20 40 25 25 20 50 30 50 40 35 35 50 25 20 30 40 45 40 50 35 40 30 45 35 50 40 20 25 35 45 35 40 40 35 35 40 30 30 40 50 25 40 30 25 20 40 40
[52] 25 50 50 20 50 25 50 40 30 30 50 45 45 40 45 20 20 45 35 45 50 40 40 35
$F
[1] 40 40 50 30 40 50 20 45 35 50 45 30 45 35 50 35 50 35 45 25 40 50 40 50 50 50 50 35 35 40 NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA 40
[52] 45 35 35 30 45 40 40 20 50 50 45 40 40 45 45 35 40 20 30 35 45 30 50 25
答案 2 :(得分:0)
以防我使用base
函数的变体:unlist
和lapply
x <- unlist(mylist) #Turns mylist into a vector
res <- lapply(LETTERS[1:6], function(u) x[grep(u,names(x))]) #Filtering into a list the elements whose name is in the vector "A" through"F"
res <- lapply(res, unname) #To get rid of the created label names
names(res) <- LETTERS[1:6] #Names of the elements in the new list
res
$`A`
[1] 30 50 35 25 45 50 50 25 40 45 40 35 40 45 20 45 50 25 25 30 25 35 35 35 30 50 50
[28] 30 30 20 50 50 50 40 20 25 50 40 50 50 45 40 30 50 35 45 50 30 35 45 35 25 45 20
[55] 25 30 30 35 30 40 30 20 20 30 45 40 35 35 35 35 25 45 35 20 50
$B
[1] 40 35 35 50 45 40 35 40 40 45 30 20 50 35 25 40 20 35 35 50 20 25 30 35 20 40 20
[28] 45 30 20 45 20 25 20 25 30 20 30 45 25 50 30 30 25 50 45 20 45 45 50 50 35 30 30
[55] 35 45 45 50 25 25 40 25 50 45 25 30 30 25 45 45 30 20 50 30 30
$C
[1] 40 20 40 50 25 20 30 50 35 45 40 25 50 35 50 50 20 25 35 35 30 50 25 40 35 45 45
[28] 35 45 25 20 40 50 25 40 45 25 30 20 20 35 45 20 40 50 45 40 40 45 35 35 40 50 25
[55] 40 45 30 25 50 25 35 50 50 50 25 50 20 50 40 25 25 35 20 20 50
$D
[1] 35 45 45 45 40 20 35 30 25 40 30 50 20 25 35 50 50 25 35 25 35 20 25 45 40 35 40
[28] 50 40 30 40 40 20 25 50 50 35 45 50 45 50 35 30 40 35 45 25 45 45 25 40 35 35 40
[55] 50 35 25 40 25 25 30 45 50 35 20 50 20 20 45 50 40 30 35 50 45
$E
[1] 20 30 50 45 20 40 25 25 20 50 30 50 40 35 35 50 25 20 30 40 45 40 50 35 40 30 45
[28] 35 50 40 20 25 35 45 35 40 40 35 35 40 30 30 40 50 25 40 30 25 20 40 40 25 50 50
[55] 20 50 25 50 40 30 30 50 45 45 40 45 20 20 45 35 45 50 40 40 35
$F
[1] 40 40 50 30 40 50 20 45 35 50 45 30 45 35 50 35 50 35 45 25 40 50 40 50 50 50 50
[28] 35 35 40 40 45 35 35 30 45 40 40 20 50 50 45 40 40 45 45 35 40 20 30 35 45 30 50
[55] 25