【发布时间】:2016-07-18 19:01:13
【问题描述】:
假设我有一个如下所示的列表部分:
aaa[[1]]
# [1] "A5-5,73" "B3-4,73" "E3-8,73" "A1-8,73" "C1-7,73" "A1-2,73" "C3-2,73" "C1-1,73"
假设我有另一个列表,其中的部分如下所示:
bbb[[1]]
# [1] "B3-4,73" "C3-2,73" "A5-5,73" "A1-8,73" "A1-2,73" "A1-5,73" "B1-1,73" "C1-4,73"
考虑一下我现在运行
which(aaa[[1]]!= bbb[[1]])
返回
# [1] 1 2 3 5 6 7 8
这在技术上是正确的,因为[4] 的索引在aaa 和bbb 中是相同的
我想要返回的是:
# [1] "C1-7,73" "A1-2,73" "C1-1,73"
因为这些是aaa 的值,它们不在bbb 中,无论位置如何。我也愿意接受只提供索引号的解决方案,例如:
# [1] 5 6 8
这是一个可重现的示例:
aaa <- vector("list")
aaa[[1]] <- c("A5-5,73", "B3-4,73", "E3-8,73", "A1-8,73",
"C1-7,73", "A1-2,73", "C3-2,73", "C1-1,73")
bbb <- vector("list")
bbb[[1]] <- c("B3-4,73", "C3-2,73", "A5-5,73", "A1-8,73",
"A1-2,73", "A1-5,73", "B1-1,73", "C1-4,73")
【问题讨论】:
-
我想你想要
setdiff(),就像setdiff(aaa[[1]], bbb[[1]])一样 -
而你想要返回的和数据不匹配。
E3-8,73而不是A1-2,73,是吗? -
以上两个cmets都是正确的。我不知道
setdiff -
@RichardScriven 回答这个问题。