我有一个列表:如何删除共享值
x <- list("a" = c(1:6,32,24) , "b" = c(1:4,8,10,12,13,17,24),
"F" = c(1:5,9:15,17,18,19,20,32))
x
$a
[1] 1 2 3 4 5 6 32 24
$b
[1] 1 2 3 4 8 10 12 13 17,24
$F
[1] 1 2 3 4 5 9 10 11 12 13 14 15 17 18 19 20 32
列表中的每个向量共享一个号码与他人元件。我如何删除共享值以获得以下结果?
$a
[1] 1 2 3 4 5 6 32 24
$b
[1] 8 10 12 13 17
$F
[1] 9 11 14 15 18 19 20
正如你所看到的:第一个向量不会改变。第一个和第二个向量之间的共享元素将从第二个向量中移除,然后我们将第三个向量与第一个和第二个向量进行比较之后,从第三个向量中移除共享元素。此任务的目标是聚类数据集(原始数据集包含590个对象)。
x_rev < - rev(x); lapply(seq_along(x),function(y)Reduce(setdiff,x_rev [seq(y)]))...会根据您的评论给出不同的结果。反正+1。你的解决方案是一个真正的美。 –
谢谢,詹姆斯为你的答案,它完美的作品。 – Noor
@AndreElrico好点,你必须注意索引。我认为'tail(x_rev,y)'会效果最好。 – James