gpt4 book ai didi

r - 将函数应用于 R data.frame 中另一列的一系列值以使其保持矢量化的最佳方法是什么?

转载 作者:行者123 更新时间:2023-12-03 23:59:21 25 4
gpt4 key购买 nike

我在 R data.frame 中有几列,我想根据一些已经存在的列的值范围创建一个新列。这些范围不规则,由写在前两列中的开始值和结束值决定。我希望计算保持矢量化。我不想在下面有一个 for 循环。
所需的结果,通过 for 循环实现:

df = data.frame(start=c(2,1,4,4,1), end=c(3,3,5,4,2), values=c(1:5))
for (i in 1:nrow(df)) {
df[i, 'new'] <- sum(df[df[i, 'start']:df[i, 'end'], 'values'])
}
df

最佳答案

这是一个基本的 R 单线。

mapply(function(x1, x2, y){sum(y[x1:x2])}, df[['start']], df[['end']], MoreArgs = list(y = df[['values']]))
#[1] 5 6 9 4 3

还有一个。

sapply(seq_len(nrow(df)), function(i) sum(df[['values']][df[i, 'start']:df[i, 'end']]))
#[1] 5 6 9 4 3

关于r - 将函数应用于 R data.frame 中另一列的一系列值以使其保持矢量化的最佳方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64199932/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com