我正在学习 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/