gpt4 book ai didi

r - 使用 data.table 对 r 中的序列求和

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

我正在尝试使用 r 中的 data.table 对系列的各个部分求和。这个想法是我将开始索引和结束索引定义为表中的列,然后为“开始和结束索引之间的系列之和”创建第三列。

series = c(1,2,3,4,5,6)
a = data.table(start=c(1,2,3),end=c(4,5,6))
a[,S := sum(series[start:end])]
a
预期结果:
   start end  S
1: 1 4 10
2: 2 5 14
3: 3 6 18
实际结果:
Warning messages:
1: In start:end : numerical expression has 3 elements: only the first used
2: In start:end : numerical expression has 3 elements: only the first used
> a
start end S
1: 1 4 10
2: 2 5 10
3: 3 6 10
我在这里错过了什么?如果我只执行 a[,S := start+end] 代码会按预期执行。

最佳答案

一个选项是使用 Map 循环遍历“开始”、“结束”列,得到对应元素的序列(:),得到sumunlist , list将 ( := ) 分配给新列的列

a[, S := unlist(Map(function(x, y) sum(x:y), start, end))]
-输出
a
# start end S
#1: 1 4 10
#2: 2 5 14
#3: 3 6 18
:没有对其操作数进行矢量化,即它在任一侧只需要一个操作数,这就是它显示警告的原因

关于r - 使用 data.table 对 r 中的序列求和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64600914/

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