【问题标题】:How can I partition a vector?如何对向量进行分区?
【发布时间】:2011-01-26 22:47:36
【问题描述】:

如何构建函数

slice(x, n) 

这将返回一个向量列表,其中每个向量可能除了最后一个之外的大小为 n,即

slice(letters, 10)

会回来

list(c("a", "b", "c", "d", "e", "f", "g", "h", "i", "j"),
     c("k", "l", "m", "n", "o", "p", "q", "r", "s", "t"),
     c("u", "v", "w", "x", "y", "z"))

?

【问题讨论】:

    标签: r vector


    【解决方案1】:
    slice<-function(x,n) {
        N<-length(x);
        lapply(seq(1,N,n),function(i) x[i:min(i+n-1,N)])
    }
    

    【讨论】:

      【解决方案2】:

      你可以使用split函数:

      split(letters, as.integer((seq_along(letters) - 1) / 10))
      

      如果你想把它变成一个新的函数:

      slice <- function(x, n) split(x, as.integer((seq_along(x) - 1) / n))
      slice(letters, 10)
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2020-07-14
        • 1970-01-01
        • 2016-10-12
        • 2014-08-31
        • 2017-11-25
        • 2018-01-11
        • 1970-01-01
        • 2018-12-16
        相关资源
        最近更新 更多