我正在编写一个R程序,我在repeat
的每次迭代中向矩阵添加一列。因为我选择repeat
,所以我无法访问当前的迭代编号。
我可以使用cbind
来创建矩阵,但我知道这很慢。
有没有办法在不知道当前指数的情况下按列填写预分配的矩阵?
答案 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),]
调整块的大小,根据需要增加矩阵。