如何在子集中编写元素查找索引的代码?

时间:2014-12-28 16:43:06

标签: r

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

2 个答案:

答案 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