2014-09-05 2 views
0

Я использую двойную петлю, чтобы заполнить матрицу, используя следующий код.Использование двойной петли для заполнения матрицы в R

mat<-matrix(NA, nrow=2, ncol=2) 

for (i in 1:2){ 
for (j in 3:4){ 
    mat[i,j]<-c(i,j) 
    } 
} 
mat 

Ошибка я получаю:

Error in '[<-'('*tmp*', i, j, value = c(3L, 1L)) : 
    subscript out of bounds 

Что я делаю неправильно?

ответ

1

Таким образом, здесь есть две проблемы. Сначала ваш внутренний for(...) цикл ссылается на столбцы 3: 4, но есть только 2 столбца.

Во-вторых, вы определяете матрицу, которая должна иметь одиночные значения в элементах, но затем вы пытаетесь установить каждый элемент в вектор.

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

mat<-matrix(list(c(NA,NA)), nrow=2, ncol=2) 
for (i in 1:2){ 
    for (j in 1:2){ 
    mat[i,j][[1]]<-c(i,j) 
    } 
} 
mat 
#  [,1]  [,2]  
# [1,] Integer,2 Integer,2 
# [2,] Integer,2 Integer,2 
mat[1,1] 
# [[1]] 
# [1] 1 1 
+0

Благодарим вас за ответ. Это объясняет многое. Я пытался выполнить результат expand.grid (1: 2,3: 4) с неправильным подходом. – Alph

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