【发布时间】:2020-01-27 08:23:18
【问题描述】:
如何创建一个while 循环来测试序列的每个项目?目标是查看序列中有多少是偶数。
【问题讨论】:
标签: r loops while-loop sequence
如何创建一个while 循环来测试序列的每个项目?目标是查看序列中有多少是偶数。
【问题讨论】:
标签: r loops while-loop sequence
在 R 中,您应该尽可能避免循环。
在您的情况下,如果您有一个名为 v 的向量,则有一个没有循环的解决方案,
sum(v%%2==0)
会给你你正在寻找的东西。
v%%2==0 返回一个与v 长度相同的向量,其中偶数为 TRUE,不均匀时为 FALSE。取它的总和计算数量或 TRUE 元素,这就是你的答案。
【讨论】:
正如@fmarm 所说,在 R 中总是首选使用矢量化操作。但是,如果您真的想要为此使用 while 循环(或者如果您只是将此示例用于某些事情更复杂),你可以这样做:
set.seed(1)
myVector <- sample(100)
i <- 0
count <- 0
while(i < length(myVector)){
i <- i + 1
if(myVector[i] %% 2 == 0){
count <- count + 1
}
}
print(count)
50
【讨论】:
对 R 技术有一些基本知识的人可以使用的一种解决方案是使用 ifelse() 函数。 ifelse() 函数比使用那些 while() 或 for() 循环更好。
set.seed(5) # Use 5 to duplicate these results
n <- sample(1:100, 25, replace = F) # select 25 random numbers
count = 0 # start variable w/zero value
sum(ifelse(n %% 2 == 0, c(count = count + 1), 0))
10
对于 n 中的每个值,ifelse() 函数首先检查除以 2 的余数是否等于 0。如果为 TRUE,则 ifelse() 函数将 count 变量加 1。如果除以得到余数= 1,则 ifelse() 函数返回 FALSE,结果为 0,什么也没有发生。
最后,sum() 函数将 ifelse() 函数返回的 1 的数量相加。
这里,n 中的偶数之和等于 10。如果需要,可以使用 print(n) 验证这一点,然后计算 n 中偶数的个数。
记得点击向上箭头按钮以获得最佳答案。
【讨论】: