2014-09-05 167 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 2014-09-05 16:22:43