我在列表中有data.frame对象,并且我确实操纵了网格中所有可能的配对对象索引。现在,我想获得给定对象的索引组的不同组合。如何更轻松/更有效地实现这一目标?有谁知道为data.frame对象做这种分组索引的直接方法?
foo <- data.frame( start=seq(1, by=4, len=6), stop=seq(3, by=4, len=6))
bar <- data.frame(start=seq(5, by=2, len=7), stop=seq(7, by=2, len=7))
bleh <- data.frame(start=seq(1, by=5, len=5), stop=seq(3, by=5, len=5))
myList <- list(foo, bar, bleh)
nn <- length(myList)
index <- expand.grid("query"=1:nn, "target"=1:nn)
index <- index[index[,1] <= index[,2],]
$foo
query target
1 1 1
4 1 2
7 1 3
$bar
query target
4 1 2
5 2 2
8 2 3
$bleh
query target
7 1 3
8 2 3
9 3 3
根据所需的输出,我怎样才能得到这个?是否有任何R包提供相应的方法来进行这种操作?有人可以提出可行的想法来完成这项任务吗?感谢
答案 0 :(得分:2)
我们可以试试
i1 <- seq_along(myList)
l1 <- lapply(i1, function(i) seq(i))
l2 <- lapply(seq_along(i1), function(i) i1[!i1 %in% sequence(i-1)] )
Map(function(x,y) {x1 <- expand.grid(x,y)
x1[c(TRUE, diff(x1[,1])>=0),]}, l1, l2)
#[[1]]
# Var1 Var2
#1 1 1
#2 1 2
#3 1 3
#[[2]]
# Var1 Var2
#1 1 2
#2 2 2
#4 2 3
#[[3]]
# Var1 Var2
#1 1 3
#2 2 3
#3 3 3