从其他堆栈溢出帖子中,我发现以下代码可用于查找多个向量之间的公共值(例如a,b):
Reduce(intersect, list(a,b,...))
我无法找到从矢量中获取共同 Value 指数的好方法 . 任何帮助,将不胜感激 .
以下是所需输入和输出的示例:
a <- c(5,2) b <- c(5,3) d <- c(4,5)
a和b之间的公共值索引应为1,因为两个向量在该索引处都有5 . 为了找到a和d之间的公共值索引,该方法应该为a返回1,为d返回2 .
a <- c(5,2); b <- c(5,3); d <- c(4,5) mylist = list(a = a, b = b, d = d) #OR mylist = mget(c("a", "b", "d")) common_values = Reduce(intersect, mylist) lapply(mylist, function(x) which(x %in% common_values)) #$a #[1] 1 #$b #[1] 1 #$d #[1] 2
当可以存在多个公共值时,您不清楚如何解决,但这是一种方法
a = 1:3 b = 2:4 d = c(2, 7, 3, 5) mylist = mget(c("a", "b", "d")) common_values = Reduce(intersect, mylist) lapply(mylist, function(x) sapply(setNames(common_values, common_values), function(y) which(x %in% y))) #$a #2 3 #2 3 #$b #2 3 #1 2 #$d #2 3 #1 3
1 回答
当可以存在多个公共值时,您不清楚如何解决,但这是一种方法