通过根据条件删除元素来修改列表

Modify a list by deleting elements based on a condition

我必须创建一个函数来接收 x 元素的列表并通过删除 2 或 7 的元素来修改它。

这是我解决该问题的方法:

extract.inputs <- function(x) { for(i in 1:length(x)){
  if(x[i] == 2 | x[i] == 7){
     x[x != i]}}}

当我试图通过时

lst <- c(2, 2, -3, 1, -99, -10, 10, 7)

作为参数,它不修改列表,它returns完全相同的列表

如何修改它才能得到没有 2 和 7 数字的列表?

除了前面的建议之外,请注意 which 函数可用于生成所需向量中值的位置。所以:

vals <- which(lst !=2 & lst !=7)
vals
[1] 3 4 5 6 7
lst[vals]
[1]  -3   1 -99 -10  10

# You can combine both statements
lst[which(lst !=2 & lst !=7)]
[1]  -3   1 -99 -10  10

which 通常是一个非常方便的函数。