R中的条件逻辑条件

时间:2015-03-30 14:57:53

标签: r

假设我有一个如下所示的数据框:

> testdf <- data.frame(x=rep(1:3, each = 3), y=rep(1:3))
> testdf
  x y
1 1 1
2 1 2
3 1 3
4 2 1
5 2 2
6 2 3
7 3 1
8 3 2
9 3 3

现在假设我想选择(x,y)的组合对应

中的任何行的行
> conddf <- data.frame(x=c(1, 1, 3), y=c(2, 3, 1))
> conddf
  x y
1 1 2
2 1 3
3 3 1

因此对于这个特定的例子,我想选择行(2,3,7)。我强调了“组合”这个词。上面,因为我认为正是这个逻辑陈述的正确表述对我来说是有问题的。我尝试过使用包括%in%命令在内的一些变体,但我还没有能够将其设置为考虑到(x,y)的组合。在某种意义上,y的允许值是以x的值为条件的。我的原始数据集非常大,所以我希望避免循环。

有什么想法吗?


编辑:这似乎做我想要的,但使用循环。我似乎无法将其纳入subset()sapply(),所以对此有所帮助就足够了!

testdf <- data.frame(x=rep(1:3, each = 3), y=rep(1:3))
conddf <- data.frame(x=c(1, 1, 3), y=c(2, 3, 1))
tempfun <- function(x) {ifelse(x[,2] %in% conddf$y[conddf$x == x[,1]], 1, 0)}
ind <- c()
for (i in 1:9) {
  ind <- c(ind, tempfun(testdf[i,]))
}

0 个答案:

没有答案