从列表中提取一系列值,但不包括 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]
如果我有一个包含 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%
和 &
y[(u <- seq_along(y)) %in% 30:60 & u != 40]