data.table の特定の行の 1 つの列の値を変更しようとしています。これは、ベクトル スキャンを実行すると機能しますが、バイナリ検索を実行すると機能しません。
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でこのような値を変更するための最良の(最速の)方法は何でしょうか?
ありがとうございました。