【问题标题】:Creating a While Loop with a vector in R在 R 中创建带有向量的 While 循环
【发布时间】:2020-01-27 08:23:18
【问题描述】:

如何创建一个while 循环来测试序列的每个项目?目标是查看序列中有多少是偶数。

【问题讨论】:

    标签: r loops while-loop sequence


    【解决方案1】:

    在 R 中,您应该尽可能避免循环。 在您的情况下,如果您有一个名为 v 的向量,则有一个没有循环的解决方案,

    sum(v%%2==0)
    

    会给你你正在寻找的东西。 v%%2==0 返回一个与v 长度相同的向量,其中偶数为 TRUE,不均匀时为 FALSE。取它的总和计算数量或 TRUE 元素,这就是你的答案。

    【讨论】:

    • 会统计奇数个数
    【解决方案2】:

    正如@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
    

    【讨论】:

      【解决方案3】:

      对 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 中偶数的个数。

      记得点击向上箭头按钮以获得最佳答案。

      【讨论】:

        猜你喜欢
        • 2015-11-23
        • 1970-01-01
        • 1970-01-01
        • 2017-12-09
        • 1970-01-01
        • 2021-12-17
        • 1970-01-01
        • 1970-01-01
        • 2015-04-22
        相关资源
        最近更新 更多