如何使用 while 和 if 循环从范围内的列表中 select 值?

how to select values from a list within a Range using while and if loop?

我有一个包含值的列表,我需要从该列表中 select 大于或等于 3 且小于 than/equal 到 4 的值,但我不知道该怎么做使用 while 和 if 循环。谁能告诉我如何解决这个问题?

其实你不需要任何while/if声明,你可以简单地应用

x[x >= 3 & x <= 4]

如果您必须使用 whileif 来制作,下面是一个选项

k <- 1
res <- c()
while(k < length(x)) {
    if (x[k] >= 3 & x[k] <= 4) {
        res <- append(res,x[k])
    }
    k <- k + 1
}

如果我理解正确,您可以使用以下解决方案。假设我们有一个长度为 20 的向量 vec:

  • 我们首先创建一个空向量 out 以在每次迭代期间将我们的结果存储在其中(如果有的话)
  • 然后我们设置迭代器i为其第一个值(这里我们设置初始值为1)

While 循环以测试条件 (i <= length(vec)) 开始,因此之后它们执行循环体(我们的 if 子句和随后的满足我们要求的值赋值(>=3 & <=4 ) 到 out)。然后它将 1 添加到迭代器并再次评估条件等等。

vec <- sample(1:10, size = 20, replace = TRUE)

out <- c()
i <- 1

while(i <= length(vec)) {
  if(vec[i] <= 4 & vec[i] >= 3) {
    out <- c(out, vec[i])
  } 
  i <- i + 1
}
out

[1] 4 3