创建第四行作为第一行的总和的最快方法
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
我有一个包含以下行的数据框:
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