R:如何重新排列列表对象
我的直觉是使用R:如何重新排列列表对象,r,list,R,List,我的直觉是使用lappy循环遍历矩阵的列并将它们存储在新列表中,但我不确定如何有效地执行此操作。您可以绑定、按列拆分并转换回矩阵: [[1]] [,1] [,2] [,3] [1,] 1 2 43 [2,] 2 3 90 [3,] 3 9 1 [[2]] [,1] [,2] [,3] [1,] "red" "green" "black" [2,] "blue" "blue" "red" [3,]
lappy
循环遍历矩阵的列并将它们存储在新列表中,但我不确定如何有效地执行此操作。您可以绑定、按列拆分并转换回矩阵:
[[1]]
[,1] [,2] [,3]
[1,] 1 2 43
[2,] 2 3 90
[3,] 3 9 1
[[2]]
[,1] [,2] [,3]
[1,] "red" "green" "black"
[2,] "blue" "blue" "red"
[3,] "green" "green" "green"
[[3]]
[,1] [,2] [,3]
[1,] "apple" "apple" "orange"
[2,] "banana" "guava" "watermelon"
[3,] "orange" "orange" "orange"
您可以
取消列表
,然后再次将其拆分为列表
。我在其中添加了一个类型。convert
,将第一组值转换为数值
lapply(asplit(do.call(rbind, mylist), 2), matrix, 3)
[[1]]
[,1] [,2] [,3]
[1,] "1" "2" "43"
[2,] "2" "3" "90"
[3,] "3" "9" "1"
[[2]]
[,1] [,2] [,3]
[1,] "red" "green" "black"
[2,] "blue" "blue" "red"
[3,] "green" "green" "green"
[[3]]
[,1] [,2] [,3]
[1,] "apple" "apple" "orange"
[2,] "banana" "guava" "watermelon"
[3,] "orange" "orange" "orange"
没有任何lappy
调用的短基R方法:
asplit(`dim[[1]]
#> [,1] [,2] [,3]
#> [1,] "1" "2" "43"
#> [2,] "2" "3" "90"
#> [3,] "3" "9" "1"
#>
#> [[2]]
#> [,1] [,2] [,3]
#>[1,]“红色”“绿色”“黑色”
#>[2,]“蓝色”“蓝色”“红色”
#>[3,]“绿色”“绿色”“绿色”
#>
#> [[3]]
#> [,1] [,2] [,3]
#>[1,]“苹果”“苹果”“橙色”
#>[2]“香蕉”“番石榴”“西瓜”
#>[3,]“橙色”“橙色”“橙色”
很好。我想你在这里比我高出了2个字节!精简和改进的版本asplit(Simplified2Array(mylist),2)
@27ñ9绝妙的解决方案!
lapply(asplit(do.call(rbind, mylist), 2), matrix, 3)
[[1]]
[,1] [,2] [,3]
[1,] "1" "2" "43"
[2,] "2" "3" "90"
[3,] "3" "9" "1"
[[2]]
[,1] [,2] [,3]
[1,] "red" "green" "black"
[2,] "blue" "blue" "red"
[3,] "green" "green" "green"
[[3]]
[,1] [,2] [,3]
[1,] "apple" "apple" "orange"
[2,] "banana" "guava" "watermelon"
[3,] "orange" "orange" "orange"
lapply(split(unlist(mylist), rep(1:3, each = 3)), function(x) matrix(type.convert(x), 3))
## $`1`
## [,1] [,2] [,3]
## [1,] 1 2 43
## [2,] 2 3 90
## [3,] 3 9 1
##
## $`2`
## [,1] [,2] [,3]
## [1,] "red" "green" "black"
## [2,] "blue" "blue" "red"
## [3,] "green" "green" "green"
##
## $`3`
## [,1] [,2] [,3]
## [1,] "apple" "apple" "orange"
## [2,] "banana" "guava" "watermelon"
## [3,] "orange" "orange" "orange"
##