代码之家  ›  专栏  ›  技术社区  ›  Karsten W.

如何划分向量?

  •  8
  • Karsten W.  · 技术社区  · 15 年前

    如何构建函数

    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"))
    

    ?

    2 回复  |  直到 15 年前
        1
  •  8
  •   Jyotirmoy Bhattacharya    15 年前
    slice<-function(x,n) {
        N<-length(x);
        lapply(seq(1,N,n),function(i) x[i:min(i+n-1,N)])
    }
    
        2
  •  8
  •   Shane    15 年前

    您可以使用 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)