7
バイナリ検索機能J()
とroll = "nearest"
に問題があります。data.table join with roll = "nearest"は元の値の代わりに "検索値"を返します
のは私がroll = "nearest"
で検索を行うこの例data.table "DT"
Key Value1 Value2
20 4 5
12 2 1
55 10 7
を得たとしましょう:
dt[J(15), roll = "nearest"]
...返す:
Key Value1 Value2
15 2 1
をしたがって、正しい行が返されます。しかし、元の「キー」値(12)は検索(15)で使用された値に置き換えられます。
私の質問は、通常の動作で、この自動オーバーライドを変更できますか?
EDIT:
再現例(私はバージョン1.9.7を使用して注意してください):
library("data.table")
dt <- data.table(c(20,12,55), c(4,2,10), c(5,1,7))
dt
# V1 V2 V3
#1: 20 4 5
#2: 12 2 1
#3: 55 10 7
setkey(dt, V1)
dt[J(15), roll = "nearest"]
# V1 V2 V3
#1: 15 2 1
これはベースRから継承され、[data.table#1615](https://github.com/Rdatatable/data.table/issues/1615)に関連しています。再現可能な例を提供するなら、私はあなたに解決策を教えようとします... – jangorecki
あなたの答えをありがとう!再現可能な例では、そのような意味ですか? – Lennie
はい、ちょっと編集して簡単にコピー&ペーストすることができますので、人々は答えてください:) – jangorecki