r - 如何在for循环中验证条件

标签 r for-loop

我正在学习 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 包装向量时,它返回 length 1 的 list 并且单位将是整个向量。 R 中的 for 循环是一个 for each 循环,而不是传统的计数器控制的 3 部分表达式循环。因此,i 将是整个 vetor 向量。

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

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

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

关于r - 如何在for循环中验证条件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67525679/

相关文章:

html - 在 knitr 中加快 fig.show 间隔

javascript - Chrome 浏览器中的 For-of 循​​环

php - 是否可以动态设置for循环嵌套的层级

R 微基准和自动绘图?

r - 我可以在 R 中写入和访问内存中的文件吗?

java - 检查 ArrayList<String> 中的每个字母是否是某个字符?

c++ - 检查一个数是否能被许多其他数整除

javascript - 在for循环中获取html元素

r - 计算日期范围内有重叠和间隙的唯一天数

r - 检查列中的数字是否按某个值递增(R 数据帧)