如何验证for循环中的条件

我正在学习 R 端数据科学。在一个问题中,我需要验证数组中的数字是否为偶数。

我的代码:

vetor <- list(c(1, 2, 3, 4, 5, 6, 7, 8, 9, 10))

for (i in vetor) {
    if (i %% 2 == 0) {
      print(i)
    } 
}

但结果是一条警告消息:

Warning message:
In if (i%%2 == 0) { :
  a condição tem comprimento > 1 e somente o primeiro elemento será usado

翻译:

条件的长度 > 1,并且只会使用第一个元素。

我需要的是,验证列表中的每个元素是否为偶数,如果为真,则打印它。

在 R 中,我该怎么做?

回答

list不需要包装器

vetor <- c(1, 2, 3, 4, 5, 6, 7, 8, 9, 10)

运行 OP 的代码

for (i in vetor) {
    if (i %% 2 == 0) {
      print(i)
    } 
}

#[1] 2
#[1] 4
#[1] 6
#[1] 8
#[1] 10

这些是矢量化操作。我们不需要循环

vetor[vetor %% 2 == 0]
#[1]  2  4  6  8 10

当我们与包裹该载体list,它返回一个listlength1和单元将是整个矢量。该for环在R是一个for each环路,而不是传统的计数器控制部3表达式循环。所以,i将是整个vetor向量。

因为if/else需要单个元素而不是length大于 1的向量,所以会导致警告消息

或者,如果我们想将它存储在list每个元素为length1 的 a 中,请使用as.list

vetor <- as.list(c(1, 2, 3, 4, 5, 6, 7, 8, 9, 10))


以上是如何验证for循环中的条件的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>