可以从类似于下面的列表中随机抽样单个列。
list(combinations(4,3,1:4),combinations(4,2,1:4))
[[1]]
[,1] [,2] [,3]
[1,] 1 2 3
[2,] 1 2 4
[3,] 1 3 4
[4,] 2 3 4
[[2]]
[,1] [,2]
[1,] 1 2
[2,] 1 3
[3,] 1 4
[4,] 2 3
[5,] 2 4
[6,] 3 4
我试图将列组合成1d矩阵列表,例如。 list(matrix [,1],matrix [,2] ...),但是也无法正常工作。由于矩阵具有不同的维度,我不确定如何解决这个问题。
答案 0 :(得分:3)
您可以使用lapply
,as.vector
和do.call
的简单应用来执行此操作:
l <- list(matrix(1:16,4,4),matrix(1:8,4,2),matrix(1:20,4,5))
rs <-lapply(l,as.vector)
matrix(do.call(c,rs),ncol = 1)
但这是我的最后一次尝试。如果你再次更改问题,我只是删除它并继续前进。 ;)
答案 1 :(得分:1)
这是一种方法,首先将矩阵展平为列列表:
> library(gtools)
> matrices <- list(combinations(4,3,1:4),combinations(4,2,1:4))
> columns <- do.call(c, lapply(matrices, function(x) as.list(as.data.frame(x))))
> columns
$V1
[1] 1 1 1 2
$V2
[1] 2 2 3 3
$V3
[1] 3 4 4 4
$V1
[1] 1 1 1 2 2 3
$V2
[1] 2 3 4 3 4 4
> columns[[sample(length(columns), 1)]]
[1] 1 1 1 2 2 3
> columns[[sample(length(columns), 1)]]
[1] 2 3 4 3 4 4
> columns[[sample(length(columns), 1)]]
[1] 2 2 3 3