与R中的值对匹配的子集变量

与R中的值对匹配的子集变量,r,dataframe,subset,R,Dataframe,Subset,从给定的数据帧(myData,在下面的示例中),我希望使用与列表中存储的至少一对值匹配的值来子集变量(myList,在下面的示例中) 尽管如此,输出仍然是一个空整数。我是否在哪个语句中遗漏了什么?另外,如何实现多对值的代码?我找到了解决此问题的方法: myData[, unique(which(sapply(myList, function(y) apply(myData, 2, function(x)all(y %in% x))),arr.ind = T)[, 1])] v1 v4

从给定的数据帧(
myData
,在下面的示例中),我希望使用与列表中存储的至少一对值匹配的值来子集变量(
myList
,在下面的示例中)


尽管如此,输出仍然是一个空整数。我是否在
哪个
语句中遗漏了什么?另外,如何实现多对值的代码?

我找到了解决此问题的方法:

myData[, unique(which(sapply(myList, function(y) apply(myData, 2, function(x)all(y %in% x))),arr.ind = T)[, 1])]
     v1 v4
[1,]  1  8
[2,]  2 15
[3,]  3  6
[4,]  8  7
[5,] 15  9
这是一个有点丑陋的功能,因此解释如下:
apply函数检查是否可以在myData列中找到myList列表项中的所有项。sapply函数确保搜索列表中的所有项目。which语句检查他能找到的内容,并给出行和列。我们只对输出列的唯一行感兴趣。有点复杂,但希望能有所帮助:)

您是在搜索这对数字中每个数字的顺序出现(8然后15;2然后3)还是每对数字中两个数字的任何出现?任何出现。我使用中的修改发现了类似的结果<代码>cols
subset <- myData[which(myData==unlist(myList[[1]][1]) & myData==unlist(myList[[1]][2]))]
myData[, unique(which(sapply(myList, function(y) apply(myData, 2, function(x)all(y %in% x))),arr.ind = T)[, 1])]
     v1 v4
[1,]  1  8
[2,]  2 15
[3,]  3  6
[4,]  8  7
[5,] 15  9