【问题标题】:How to create a set of ranges from a vector in R?如何从 R 中的向量创建一组范围?
【发布时间】:2014-11-10 13:44:03
【问题描述】:

假设我有一个指定长度的数字向量。

x = c(3,5,4,10)

然后我运行 cumsum 来获取他们的范围。

cumsum(x)

3  8 12 22

如何将每个配对以产生从 1 开始的范围对。

最好作为字符向量:

c("1-3", "3-8", "8-12", "12-22")

【问题讨论】:

    标签: r cumsum


    【解决方案1】:

    你可以像这样使用paste

    paste(c(1, cumsum(x))[-(length(x)+1)], cumsum(x), sep = "-")
    # [1] "1-3"   "3-8"   "8-12"  "12-22"
    

    【讨论】:

    • (+1) c(1, head(cumsum(x), -1)) 似乎比 c(1, cumsum(x))[-(length(x)+1)] 更好
    【解决方案2】:

    另一种选择是使用sprintf

     x1 <- c(1, cumsum(x))
     sprintf('%d-%d', x1[-length(x1)], x1[-1])
     #[1] "1-3"   "3-8"   "8-12"  "12-22"
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2022-07-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多