如何验证for循环中的条件
我在研究R端数据科学。在一个问题中,我需要验证数组中的数字是否为偶数 我的代码:如何验证for循环中的条件,r,for-loop,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) } } 翻译: 条件的长度大于1,并且只使用第一个元素。 我需要的是,验证列表中的每个元素是否为偶数,如果为真,则打印它 在R中,我如何做呢?不需要列表的包装器 vetor <- c
vetor <- list(c(1, 2, 3, 4, 5, 6, 7, 8, 9, 10))
for (i in vetor) {
if (i %% 2 == 0) {
print(i)
}
}
翻译:
条件的长度大于1,并且只使用第一个元素。
我需要的是,验证列表中的每个元素是否为偶数,如果为真,则打印它
在R中,我如何做呢?不需要
列表的包装器
vetor <- c(1, 2, 3, 4, 5, 6, 7, 8, 9, 10)
这些是矢量化操作。我们不需要回路
vetor[vetor %% 2 == 0]
#[1] 2 4 6 8 10
当我们用列表
包装向量时,它返回一个列表
,长度为1,单位为整个向量。R
中的for
循环是每个循环的,而不是传统的计数器控制的3部分表达式循环。因此,i
将是整个vetor
向量
因为if/else
需要单个元素而不是length
大于1的向量,因此会产生警告消息
或者,如果我们想将其存储在列表中,每个元素的长度1,请使用as.list
vetor <- as.list(c(1, 2, 3, 4, 5, 6, 7, 8, 9, 10))
vetor让我们分解您的代码,深入每一步,看看发生了什么
您应该注意到,vetor
是一个列表,即
> vetor
[[1]]
[1] 1 2 3 4 5 6 7 8 9 10
在这种情况下,vetor
中的迭代器i表示vetor
中的数组,可以从
> for (i in vetor) {
+ str(i)
+ }
num [1:10] 1 2 3 4 5 6 7 8 9 10
因此,当您有条件i%%2==0
时,您确实正在运行
> for (i in vetor) {
+ print(i %% 2 == 0)
+ }
[1] FALSE TRUE FALSE TRUE FALSE TRUE FALSE TRUE FALSE TRUE
如果。。。否则…
state。这就是你收到警告的原因
关于解决方法,您可以参考,这对您有很大帮助非常感谢,@akrun,这正是我需要了解的!
> for (i in vetor) {
+ str(i)
+ }
num [1:10] 1 2 3 4 5 6 7 8 9 10
> for (i in vetor) {
+ print(i %% 2 == 0)
+ }
[1] FALSE TRUE FALSE TRUE FALSE TRUE FALSE TRUE FALSE TRUE