在R中填写预分配的矩阵

时间:2014-12-18 11:57:02

标签: r

我正在编写一个R程序,我在repeat的每次迭代中向矩阵添加一列。因为我选择repeat,所以我无法访问当前的迭代编号。 我可以使用cbind来创建矩阵,但我知道这很慢。 有没有办法在不知道当前指数的情况下按列填写预分配的矩阵?

1 个答案:

答案 0 :(得分:3)

测试矩阵的大小并通过块增加其大小。这是一个例子:

set.seed(42)
mat <- matrix(NA, ncol=2, nrow=10)
i <- 1
repeat {
  if (i > nrow(mat)) mat <- rbind(mat, matrix(NA, ncol=2, nrow=10))
  x <- rnorm(1)
  y <- rnorm(1, mean=3)
  mat[i,] <- c(x, y)
  if (x > y) break
  i <- i+1  
}

mat[seq_len(i),]

调整块的大小,根据需要增加矩阵。