образец () со списком - PullRequest
       6

образец () со списком

0 голосов
/ 01 октября 2011

Можно выбрать один столбец случайным образом из списка, который выглядит примерно так, как показано ниже.

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] ...), но у него тоже были проблемы с настройкой. Поскольку матрицы имеют разные размеры, я не был уверен, как это сделать.

Ответы [ 2 ]

3 голосов
/ 01 октября 2011

Вы можете сделать это с помощью простого приложения 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 голос
/ 01 октября 2011

Вот способ сделать это, начав с объединения матриц в список столбцов:

> 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...