Split a vector into chunks

后端 未结 20 1926
时光说笑
时光说笑 2020-11-22 01:10

I have to split a vector into n chunks of equal size in R. I couldn\'t find any base function to do that. Also Google didn\'t get me anywhere. Here is what I came up with so

20条回答
  •  死守一世寂寞
    2020-11-22 02:00

    I need a function that takes the argument of a data.table (in quotes) and another argument that is the upper limit on the number of rows in the subsets of that original data.table. This function produces whatever number of data.tables that upper limit allows for:

    library(data.table)    
    split_dt <- function(x,y) 
        {
        for(i in seq(from=1,to=nrow(get(x)),by=y)) 
            {df_ <<- get(x)[i:(i + y)];
                assign(paste0("df_",i),df_,inherits=TRUE)}
        rm(df_,inherits=TRUE)
        }
    

    This function gives me a series of data.tables named df_[number] with the starting row from the original data.table in the name. The last data.table can be short and filled with NAs so you have to subset that back to whatever data is left. This type of function is useful because certain GIS software have limits on how many address pins you can import, for example. So slicing up data.tables into smaller chunks may not be recommended, but it may not be avoidable.

提交回复
热议问题