我有三个data.table,每个需要在方格中互相配对。我只想在网格广场的上下三角形上行走。我敢打赌,这在Java等其他编程语言中很简单,但我不知道如何在R中做到这一点。有谁知道这样做很简单吗?如何获得网格正方形中上下三角形的配对data.table?
数据mylist <- list(
a <- data.table(
start=seq(1, by=9, len=10), stop=seq(6, by=9, len=10),
ID=letters[seq(1:10)], score=sample(1:25, 10, replace = FALSE)),
b <- data.table(
start=seq(2, by=11, len=10), stop=seq(8, by=11, len=10),
ID=letters[seq(1:10)], score=sample(1:25, 10, replace = FALSE)),
c <- data.table(
start=seq(4, by=11, len=10), stop=seq(9, by=11, len=10),
ID=letters[seq(1:10)], score=sample(1:25, 10, replace = FALSE))
)
所有可能的对在正方形栅格(I手动一样):
grid <- matrix((a,a), (a,b), (a,c),
(b,a), (b,b), (b,c),
(c,a), (c,b), (c,c),3,3)
我无法找到合适的方法有效地创建网格对象,所以大致销从网格通过手动。
期望的输出:
网格对象可能是矩阵或其他表示形式。这是从头开始的代码,假设get.ovlp返回上面提到的网格表示,但重复的对重复了。我的目标是,通过除去这些重复对仅仅走在上/下方squre网格的三角
library(data.table)
mylist <- list(a,b,c)
get.ovlp <- function(set, idx=1L) {
que <- set[[idx]]
supp <- lapply(set[-idx], function(ele_) {
ans <- data.table::foverlaps(que, ele_)
})
return(supp)
}
get.ovlp函数仅是玩具的例子,如何重复配对重叠发生等为代表的网格对象。
我只能从上面的方形网格上面/下面的三角形(包括对角线)对上走,然后使用data.table包中的foverlaps函数。任何人都可以提出可能的想法来有效解决这个问题吗非常感谢
线打造'grid'对象是无效的,并产生一个错误。 “让每个data.table成对”是什么意思?期望的输出不清楚 – nicola
@nicola:我无法找到合适的方法来有效地构建适当的网格对象。因此,我只是手动表示我的网格对象。 – datageek
'a','b'和'c'是'data.table's。你想要一个3x3矩阵,其中每个元素包含两个'data.table's?为什么你想要这个?你说你想用'foverlaps'。你能解释一下吗?你可以只显示你的'grid'元素的所需输出吗? – nicola