【发布时间】:2015-01-12 09:14:24
【问题描述】:
我有一个 data.table,其中两列 (V1,V2) 设置为键。第三列包含多个值。
我有另一个 data.table,其中包含我想在第一个表键中搜索的对,并返回 V3 中列表的统一列表。
locations<-data.table(c(-159.58,0.2,345.1),c(21.901,22.221,66.5),list(c(10,20),c(11),c(12,33)))
setkey(locations,V1,V2)
searchfor<-data.table(lon=c(-159.58,345.1,11),lat=c(21.901,66.5,0))
最终的结果应该是这样的:
[1] 10 20 12 33
仅搜索一项时以下工作。
locations[.(-159.58,21.901),V3][[1]]
[1] 10 20
我不知道如何概括这一点并使用表“searchfor”作为搜索索引的源(顺便说一句 - 如果它使解决方案更容易,可以将“searchfor”表更改为不同的格式)。 另外,我如何将 V3 中的不同值合并到一个列表中?
【问题讨论】:
-
只需
locations[searchfor, V3]或locations[.(searchfor), V3](明确表示您正在使用二进制搜索功能)。 -
这是向前迈出的一大步(感谢@Arun!),但不是我所需要的。最终结果应该是 V3 中找到的值的列表。我会将此信息添加到原始问题中。
-
您可能会发现this post 的前半部分对于理解 data.table 中的子集/联接非常有用。
标签: r data.table