我得到的二进制搜索功能的问题J()和roll = "nearest".
假设我得到了这个例子data.table"dt"
Key Value1 Value2
20 4 5
12 2 1
55 10 7
Run Code Online (Sandbox Code Playgroud)
我用以下搜索roll = "nearest":
dt[J(15), roll = "nearest"]
Run Code Online (Sandbox Code Playgroud)
...返回:
Key Value1 Value2
15 2 1
Run Code Online (Sandbox Code Playgroud)
因此,返回正确的行.但是,原始的"密钥"值(12)被搜索(15)中使用的值替换.
我的问题是一个正常的行为,可以改变这个自动覆盖?
编辑:
可重复的示例(注意我使用的是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
Run Code Online (Sandbox Code Playgroud)
您可能需要1.9.7中的data.table来完成x.V1工作.然后,您可以x显式引用数据集中的列.这是必需的,因为连接中使用的列是从第二个数据集中获取的i,因为它位于基础R中.
library("data.table")
dt <- data.table(c(20,12,55), c(4,2,10), c(5,1,7))
setkey(dt, V1)
dt[J(15), .(V1=x.V1, V2, V3), roll = "nearest"]
# V1 V2 V3
#1: 12 2 1
Run Code Online (Sandbox Code Playgroud)
如你所说,你已经拥有1.9.7,对于其他没有看到安装维基的人.
| 归档时间: |
|
| 查看次数: |
194 次 |
| 最近记录: |