我正在寻找一种方法,将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)
答案 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
})
})