我想通过提取list1中列表2中项目的确切位置来比较两个列表。
a <- c(8, 28, 23, 21)
b <- c(28, 27, 8, 7)
我已尝试%in%或者相交,但我无法弄清楚如何获取共享项目的索引。
任何帮助都将不胜感激。
谢谢
答案 0 :(得分:1)
您提到了一个列表,但已发布了两个整数向量。
作为%in%
的更一般情况,您可以使用match
。以下是基于一些示例数据的示例。
# Sample data
set.seed(2017);
lst <- list(
one = sample(10),
two = sample(10));
lst;
#$one
# [1] 10 5 4 3 9 8 1 2 6 7
#
#$two
# [1] 7 1 9 4 3 2 5 6 10 8
# Index of lst$one elements in lst$two.
idx_one_in_two <- match(lst[[1]], lst[[2]]);
idx_one_in_two;
# [1] 9 7 4 5 3 10 2 6 8 1
例如,lst$one
(lst$one[1] = 7
)中的元素1位于9
中的lst$two
位置。
同样,对于lst$two
中的元素lst$one
。
# Index of lst$two elements in lst$one.
idx_two_in_one <- match(lst[[2]], lst[[1]]);
# [1] 10 7 5 3 4 8 2 9 1 6
根据您的示例数据,您可以执行以下操作:
a <- c(8, 28, 23, 21)
b <- c(28, 27, 8, 7)
# Index of a in b
match(a, b);
#[1] 3 1 NA NA
# Index of b in a
match(b, a);
#[1] 2 NA 1 NA