我有一个矩阵可以减少每个循环一列,另一个'b'矩阵,每个循环保持从矩阵'a'中丢失的列的值。问题是当矩阵只剩下一列时,无法通过这种方式访问a [,1]
,然后得到错误Error in a[, 1] : incorrect number of dimensions
。有办法解决这个问题吗?
a<- matrix(2,4,4);
b<- matrix(numeric(0),nrow(a),2);
i<- 1;
for ( i in 1:(ncol(a)-1)){
a<- a[,1]*a[,-1];
b[,i]<- a[,1];
}
答案 0 :(得分:1)
当矩阵上的索引结果产生单个向量时,默认行为是删除维度并返回一个简单向量。如果要保留结果的“矩阵”,则需要将drop=F
添加到索引
a<- matrix(2,4,4);
b<- matrix(numeric(0),nrow(a),3);
i<- 1;
for ( i in 1:(ncol(a)-1)){
a<- a[,1]*a[,-1, drop=F];
b[,i]<- a[,1];
}