gpt4 book ai didi

r - 将一列中的 data.table 值更改为多行

转载 作者:行者123 更新时间:2023-12-04 18:43:23 24 4
gpt4 key购买 nike

我正在尝试更改 data.table 中特定行的一列的值。这在我进行矢量扫描时有效,但在进行二分搜索时无效。

dtData <- data.table(TickerId = c(1,2,3,4,5), DateTime = c(1,2,3,4,5), Close =     c(100,200,300,400,500), key=c('TickerId', 'DateTime'))
dtQuery <- data.table(TickerId = c(1,4), DateTime = c(1,4))

#Binary search doesn't work - both changed rows now contain 101
dtData[dtQuery, Close:=c(101,401)]

#Vector scan works
dtData[TickerId %in% c(1,4) & DateTime %in% c(1,4), Close:=c(101,401)]

有人能指出为什么会这样吗?

另外,在大型 data.table 中更改此类值的最佳(最快)方法是什么?

谢谢你。

最佳答案

这行得通吗?

dtQuery[,newClose:=c(101,401)]
dtData[dtQuery,Close:=newClose]

如果是这样,它比您的矢量扫描要好得多,而不仅仅是因为速度。矢量扫描看起来非常脆弱。有了它,如果你看到一对 (4,1) 或者你在 (1,1) 之前看到 (4,4) 会发生什么?

关于r - 将一列中的 data.table 值更改为多行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19633116/

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