使用双循环填充矩阵R
问题描述:
我正在使用双循环来填充矩阵使用以下代码。使用双循环填充矩阵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
我在做什么错?
答
所以这里有两个问题。首先你的内心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
谢谢你的回答。这解释了很多。我试图用expand.grid(1:2,3:4)来完成,但不恰当的做法。 – Alph 2014-09-05 16:22:43