将列添加到矩阵

时间:2018-03-21 16:25:10

标签: r

这里有什么问题?

datMat <- matrix(runif(40,1,20),ncol=4)
datMat[,5]=rep(1,nrow(datMat))

输出:

Error in `[<-`(`*tmp*`, , 5, value = c(1, 1, 1, 1, 1, 1, 1, 1, 1, 1)) : 
  subscript out of bounds

为什么我不能添加新列?

1 个答案:

答案 0 :(得分:1)

您正在尝试引用矩阵中尚不存在的列。您可以通过

将列添加到矩阵中

datMat = cbind(datMat,rep(1,nrow(datMat))) 但这效率低下。最好用0或NA创建一个完整的矩阵,然后再添加条目,如: datMat = matrix(c(runif(40,1,20),rep(NA,10)),ncol=5,byrow=F) datMat[,5] = rep(1,nrow(datMat))