我使用双循环使用以下代码填充矩阵。
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
我做错了什么?
答案 0 :(得分: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