创建第四行作为第一行的总和的最快方法

Fastest way to create a fourth row as the sum of the 2 first

我有一个包含以下行的数据框:

m <- data.frame(rbind(c(1,4,4),c(2,4,6),c(3,2,6)))

我需要创建第四行,即由 4 索引作为该行的第一个元素,即前两行的总和。 期望的输出:

  X1 X2 X3
1  1  4  4
2  2  4  6
3  3  2  6
4  4  8 10
5  5  6 10
6  6 12 14

它将继续一行 5,这是行 1 和行 3 的总和,行 6 是 [=14] 的总和=] 和 '''4'''。因此,rbind() 的最快替代方法是什么?

我们可以使用 for 循环来做到这一点

for(i in 1:5)  m[nrow(m) + 1, ] <- m[1, ] + m[nrow(m)-1, ]
m$X1 <- seq_len(nrow(m))
m
#  X1 X2 X3
#1  1  4  4
#2  2  4  6
#3  3  2  6
#4  4  8 10
#5  5  6 10
#6  6 12 14
#7  7 10 14
#8  8 16 18

先用 NA 行扩展数据集,然后再分配

也可能更有效
m <- data.frame(rbind(c(1,4,4),c(2,4,6),c(3,2,6)))
n <- 8
s1 <- (nrow(m) + 1):n
m[s1, 1] <- s1 # creating first column with sequence
#  automatically assigns the other column from 4 to 8 rows to NA
# now we do the assign
for(i in s1) m[i, -1] <- m[1,-1 ] + m[i - 2, -1]
m
#  X1 X2 X3
#1  1  4  4
#2  2  4  6
#3  3  2  6
#4  4  8 10
#5  5  6 10
#6  6 12 14
#7  7 10 14
#8  8 16 18