将nrow(x)除以R中的llply函数内的20个大块

时间:2016-08-15 09:17:21

标签: r loops

我正在寻找一种方法,将nrow(x)组合在一个for循环中,然后将llply分成20个块,直到内部循环达到nrow的最大长度。

以下是我用来执行此操作的代码,但无法添加代码将nrow分成20个的批量。

UD_spek13是来自move pakage的UD列表。

也许我的代码可以用更友好的方式编写?

我将如何重新编写代码?

for (i in 3:length(UD_spek13)) {
  llply(unlist(UD_spek13[i]), function(x) move.contour(x, range.subset=**code to devide nrow into bulks of 20**,ts=1,ras=10,lev=c(50,95), le=20,
                                                crs=crs, name=paste(x@DBMvar@idData$trackId, "", sep ="_"), 
                                                path="C:/Users/Winmac/Documents/article3"))
}

这就是我想要解决的问题(代码无效)

for (i in 3:length(UD_spek13)) {
  llply(unlist(UD_spek13[i]), function(x) move.contour(x, range.subset=**seq(4, nrow(x), by = 20)**,ts=1,ras=20,lev=c(50,95), le=20,
                                                crs=crs, name=paste(x@DBMvar@idData$trackId, "", sep ="_"), 
                                                path="C:/Users/Winmac/Documents/article3test"))
}

range.subset = seq(4,nrow(x),by = 20)

1 个答案:

答案 0 :(得分:1)

使用mtcars,我们可以执行以下双循环:

#dummy list
myList <- list(mtcars[1:16,], mtcars[17:32,])

nBulk <- 5 #in your case this number is 20

lapply(myList, function(i){
  #exclude first 3 rows
  df1 <- tail(i, -3)
  #create bulks
  df1$group <- (1:nrow(df1)) %/% nBulk
  lapply(split(df1, df1$group), function(j){
    # some code on bulks, here just dividing by 2
    j/2
  })
})