【问题标题】:How to use "for loop" to get couples of indexes every time in R?如何使用“for循环”在R中每次获取几个索引?
【发布时间】:2021-01-29 09:32:05
【问题描述】:

假设我有这个向量 v:


v = seq(1,30,1)

我写了这个简单的循环:

for(i in v) {
  print(i)
}

但是,我想编写一个循环,及时为我提供 1:2、3:4、5:6、7:8 等。然后我会得到:

[1] 1,2
[1] 3,4
[1] 5,6
[1] 7,8
...

谁能帮帮我?

谢谢!

【问题讨论】:

    标签: r loops for-loop


    【解决方案1】:

    也许您可以生成v,步骤为 2。

    v = seq(1,30,2)
    for(i in v) {
      cat(paste(i, i + 1, sep = ','), '\n')
    }
    
    #1,2 
    #3,4 
    #5,6 
    #7,8 
    #9,10 
    #11,12 
    #13,14 
    #...
    

    【讨论】:

    • 谢谢老兄!只需进行一次调整,结果就是一个字符,我发现很难将其转换为数字格式,知道吗?
    • print/paste0/cat 总是会将结果转换为字符,但如果您在循环中检查 i 它是数字类型,因此您可以将其用于其他目的,例如子集或任何其他数学运算像往常一样。
    【解决方案2】:

    如果你想保持你的方法,试试这个:

    for(i in v[-length(v)]) {
      print(c(i, i+1))
    }
    
    [1] 1 2
    [1] 2 3
    [1] 3 4
    ...
    

    【讨论】:

      【解决方案3】:

      i 添加到子集。

      for(i in v) {
        print(v[0:1 + i])
      }
      # [1] 1 2
      # [1] 2 3
      # [1] 3 4
      # [1] ...
      

      或者你也可以考虑这个:

      cbind(v[-length(v)], v[-1])
      #      [,1] [,2]
      # [1,]    1    2
      # [2,]    2    3
      # [3,]    3    4
      # [4,]    4    5
      # [5,]    5    6
      # [6,]    ...
      

      【讨论】:

        【解决方案4】:

        需要更新打印命令并使用方法范围

        https://www.w3schools.com/python/ref_func_range.asp

        for i in range(0,len(v)-1,2):
            print(str(v[i])+","+str(v[i+1]))
        

        这样你应该得到

        1,2
        3,4
        5,6
        7,8
        ...
        

        【讨论】:

          【解决方案5】:

          试试这个

          > for(i in v) if (i%%2) print(c(i,i+1))
          [1] 1 2
          [1] 3 4
          [1] 5 6
          [1] 7 8
          [1]  9 10
          [1] 11 12
          [1] 13 14
          [1] 15 16
          [1] 17 18
          [1] 19 20
          [1] 21 22
          [1] 23 24
          [1] 25 26
          [1] 27 28
          [1] 29 30
          

          【讨论】:

            猜你喜欢
            • 2021-12-08
            • 2013-08-07
            • 1970-01-01
            • 2018-06-20
            • 2014-01-04
            • 2020-08-07
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多