【发布时间】:2021-02-22 09:26:17
【问题描述】:
由于我的实际数据集非常大,我正在尝试找到一种更快的方法来完成以下代码。我想完全摆脱 for 循环。我正在尝试根据values 中的列数将xdf 中的每一行复制到一个新的数据框中。然后,在新数据集中的每个条目旁边,显示从 values 中的第 1 列到 j 列的行总和。
xdf <- data_frame(
x = c('a', 'b', 'c'),
y = c(4, 5, 6),
)
values <- data_frame(
col_1 = c(5, 9, 1),
col_2 = c(4, 7, 6),
col_3 = c(1, 5, 2),
col_4 = c(7, 8, 5)
)
for (j in seq(ncol(values))){
if (j==1){
Temp <- cbind(xdf, z= rowSums(values[1:j]))
}
else{
Temp <- rbind(Temp, cbind(xdf, z= rowSums(values[1:j])))
}
}
print(Temp)
输出应该是:
x y z
1 a 4 5
2 b 5 9
3 c 6 1
4 a 4 9
5 b 5 16
6 c 6 7
7 a 4 10
8 b 5 21
9 c 6 9
10 a 4 17
11 b 5 29
12 c 6 14
有没有更短的方法来完成这个?
这是我能得到的最接近的答案。 How to expand data frame based on values?
我是 R 新手,很抱歉冗长的代码。
【问题讨论】: