从其他堆栈溢出帖子中,我发现以下代码可用于查找多个向量之间的公共值(例如a,b):
Reduce(intersect, list(a,b,...))
我无法找到从矢量中获取共同价值指数的好方法。任何帮助将不胜感激。
以下是所需输入和输出的示例:
a <- c(5,2)
b <- c(5,3)
d <- c(4,5)
a和b之间的公共值索引应为1,因为两个向量在该索引处都有5。为了找到a和d之间的公共值索引,该方法应该返回1表示a,2表示d。
答案 0 :(得分:1)
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