2015-02-05 3 views
1

I'have типа последующих данныхR Acces многомерной матрицы данные из функции

dim(sampleData$mod) 
# [1] 5 9 6 7 73 144 

и мне нужно, чтобы извлечь эти данные

t1 <- as.vector(sampleData$mod[,,,1,,]) 

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

Я хочу, чтобы некоторые, как это:

sampleData$mod[tmp] 

и у меня есть этот

sampleData$mod[,,,1,,] 

ответ

0

Из того, что я понял из вопроса, то вроде следующего может быть полезным:

ff = function(array, dims, inds) 
{ 
    dimseq = lapply(dim(array), seq_len) 
    dimseq[dims] = inds 
    do.call("[", c(list(array), dimseq)) 
} 

ar = array(seq_len(3*2*4*3*5), c(3,2,4,3,5)) 
identical(ar[, , 1, , ], ff(ar, 3, 1)) 
#[1] TRUE 
identical(ar[, 1, , 2, 1], ff(ar, c(2, 4, 5), c(1, 2, 1))) 
#[1] TRUE 
identical(ar[, 1, , 2:3, c(1, 3)], ff(ar, c(2, 4, 5), list(1, 2:3, c(1, 3)))) 
#[1] TRUE 
0

Самым простым решением является запуск 6 вложенными for петли (один для каждого измерения), и вы поставите значения от одного за другим на векторе vec. Затем вы делаете sampleData$mod=vec.

Обратите внимание, что вы shoud инициализируете вектор как vec=rep(0, 5*9*6*7*73*144), а затем помещаете в него значения, вместо того, чтобы делать c(vec, new_value) или у вас будет огромные накладные расходы из-за изменения размера вектора.

+0

Проблема заключается в том, что только нужно заполнить 1 размер, а не шесть измерений ... – ccarmona

Смежные вопросы