从列表中提取一系列值,但不包括 R 中的一些值

Extracting a range of values from a list, but excluding a few in R

如果我有一个包含 1 到 100 整数的向量,我想提取 30 到 60 之间的整数但不包括 40,我该怎么做? 我可以自己完成每个部分:

y<-1:100
y[30:60]
y[-40]

但我找不到同时执行这两项操作的方法。我该怎么做?

请注意,我不是在寻找这样的解决方案:

y[c(30:39,41:60)]

而是一个明确提取我不想要的值的解决方案。

一个选项是setdiff

y[setdiff(30:60, 40)]

也可以是值向量

y[setdiff(30:60, c(40, 47, 51))]

这是另一个使用 %in%&

的基本 R 选项
y[(u <- seq_along(y)) %in% 30:60 & u != 40]