2014-09-22 3 views
2

Рассмотрим следующие задания массива:R: многомерный массив назначение индекса

temp=array(list(),2) 
temp[[2]][[2]]=c("a","b") 
temp[[1]][[2]]="c" 

Это производит следующий результат:

temp 
[[1]] 
[1] NA "c" 

[[2]] 
[[2]][[1]] 
NULL 

[[2]][[2]] 
[1] "a" "b" 

Вместо этого я хочу, чтобы результат:

temp 
[[1]] 
[[1]][[1]] 
NULL 
[[1]][[2]] 
[1] "c" 

[[2]] 
[[2]][[1]] 
NULL 

[[2]][[2]] 
[1] "a" "b" 

Как сделать назначение так, чтобы оно было создано, а не последнее?

+1

Try список '(список (NULL, "с"), список (NULL, с ("а", "б")))' –

+0

В моем фактическом коде я создаю содержимое этого массива, используя циклы и другие функции с переменными выходами. Я не могу вручную решить проблему в середине моей функции; Мне нужно каким-то образом вставить результат непосредственно в нужное место в массиве. – Logister

ответ

3

Вы можете инициализировать список (ы) с помощью replicate вместо array. Списки и массивы ведут себя по-разному

x <- replicate(2, list()) 
x[[1]][[2]] <- "c" 
x[[2]][[2]] <- c("a", "b") 
x 

Примечание:

is.array(x) 
# [1] FALSE 
sapply(x, is.array) 
# [1] FALSE FALSE 
Смежные вопросы