以下代码在循环外工作正常,但在循环内部没有产生迭代结果。
elvalue <- function(x)
{
height= list(
zmean = mean(x),
zmax = max(x),
zsd = sd(x),
zmin = min(x)
)
return(height)
}
rawlist <- list.files(path = "./data/lidar/lidar_16/clipraw", pattern = ".las$", full.names = T, recursive = FALSE)
for(i in 1:length(rawlist)){
readlas <- readLAS(rawlist[i])
lasdf <- data.frame(readlas@data)
cls2 <- subset(lasdf, lasdf$Classification==2)
ht2 <- elvalue(cls2$Z)
cls3 <- subset(lasdf, lasdf$Classification==3)
ht3 <- elvalue(cls3$Z)
cls4 <- subset(lasdf, lasdf$Classification==4)
ht4 <- elvalue(cls4$Z)
cls5 <- subset(lasdf, lasdf$Classification==5)
ht5 <- elvalue(cls5$Z)
allht <- list(ht2, ht3, ht4, ht5)
它仅为第一个文件提供输出,如下所示:输出采用列表格式,因此如何同时迭代所有文件并将其另存为单独的数据框。
[[1]]
[[1]]$zmean
[1] 434.1715
[[1]]$zmax
[1] 501.41
[[1]]$zsd
[1] 27.11985
[[1]]$zmin
[1] 388.27
[[2]]
[[2]]$zmean
[1] 430.5257
[[2]]$zmax
[1] 501.58
[[2]]$zsd
[1] 26.41594
[[2]]$zmin
[1] 388.33
[[3]]
[[3]]$zmean
[1] 428.083
[[3]]$zmax
[1] 503.12
[[3]]$zsd
[1] 29.06311
[[3]]$zmin
[1] 388.66
[[4]]
[[4]]$zmean
[1] 454.2379
[[4]]$zmax
[1] 520.27
[[4]]$zsd
[1] 26.27641
[[4]]$zmin
[1] 390.61
谢谢和问候, Yogendra