library(gRbase)
m<-combn(1:4,2,simplify=FALSE)
m
[[1]]
[1] 1 2
[[2]]
[1] 1 3
[[3]]
[1] 1 4
[[4]]
[1] 2 3
[[5]]
[1] 2 4
[[6]]
[1] 3 4
我想要输出元素2 fn(2):1,4,5
答案 0 :(得分:0)
which(vapply(m, function(x) 2 %in% x, FUN.VALUE = FALSE))
#[1] 1 4 5
答案 1 :(得分:0)
res <- vector("numeric"); for( i in seq_along(m)){ if(2 %in% m[[i]]){res<-c(res,i)}}
>res
[1] 1 4 5
封装在函数中:
fn <- function(lis , item){
res <- vector("numeric")
for( i in seq_along(m)){ if(2 %in% m[[i]]){res<-c(res,i)}}
res}
> fn(m,item)
[1] 1 4 5
这是另一个对我来说不太明显的方法:我发布了我曾经到过的中间步骤序列:
sapply(seq_along(m),function(x) match(x=2,m[[x]]) )
#[1] 2 NA NA 1 1 NA
as.logical(sapply(seq_along(m),function(x) match(x=2,m[[x]]) ) )
#[1] TRUE NA NA TRUE TRUE NA
which(as.logical(sapply(seq_along(m),function(x) match(x=2,m[[x]]) ) ) )
#[1] 1 4 5