如何从向量中删除多个值?但不是全部

Hec*_*den 3 r

说我有两个向量,

set <- c(1, 1, 1, 1, 3, 3, 4, 4, 8, 8, 10)
played <- c(1, 3, 1, 4)
Run Code Online (Sandbox Code Playgroud)

我想删除原始集中的"播放"数字,我不想删除所有的1,3或4.这样得到的矢量应该是,

1,1,3,4,8,8,10
Run Code Online (Sandbox Code Playgroud)

目前我正在使用循环,但这不是一个非常有效的方法.有功能可以做我想要的.

注意:这不是重复 如何从向量中删除多个值? 而是一个扩展,所有关于不删除所有值.

重新编辑:我说订单很重要,但我错了.

Moo*_*per 6

您可以通过以下方式轻松获得pmatch:

set[-pmatch(played,set)]
# [1]  1  1  3  4  8  8 10
Run Code Online (Sandbox Code Playgroud)

这是另一个想法:

rep.int(seq_len(max(set)),tabulate(set)-tabulate(played,nbins=max(set)))
# [1]  1  1  3  4  8  8 10
Run Code Online (Sandbox Code Playgroud)

  • 当然,我很欣赏并从中学到了关于函数部分匹配的一些很酷的东西.@Hector,这是游戏的规则,不要担心,我说这一切都很有趣,因为它来回传递.质疑接受的答案是健康的 (2认同)