一次構建一行矩陣不是一種非常有效的編碼方式(因爲矩陣正在擴展,所以需要重新分配內存!)。但是,它可以完成。看看下面的玩具例子:
> C = c(0, 0, 1)
> for (n in 1:10) {
+ x <- c(n, 2*n, n+1)
+ C <- rbind(C, x)
+ }
> C
[,1] [,2] [,3]
C 0 0 1
x 1 2 2
x 2 4 3
x 3 6 4
x 4 8 5
x 5 10 6
x 6 12 7
x 7 14 8
x 8 16 9
x 9 18 10
x 10 20 11
C開始作爲一個向量。每次調用rbind()都會在矩陣上追加另一行。顯然,新行必須具有與現有矩陣中一樣多的列。
或者,爲了避免預先分配的問題,但仍然使用rbind(),您可以將數據組裝到列表中(重新分配時不會受到懲罰,也不需要預先確定元素的數量),然後完成後轉換爲矩陣。
> C = list()
>
> for (n in 1:10) {
+ C[[n]] <- c(n, 2*n, n+1)
+ }
>
> do.call(rbind, C)
[,1] [,2] [,3]
[1,] 1 2 2
[2,] 2 4 3
[3,] 3 6 4
[4,] 4 8 5
[5,] 5 10 6
[6,] 6 12 7
[7,] 7 14 8
[8,] 8 16 9
[9,] 9 18 10
[10,] 10 20 11
請讓你的問題[重複性(http://stackoverflow.com/a/5963610/1315767) –