无法将输出作为R中循环内的列表进行迭代

时间:2018-03-07 13:33:37

标签: r dataframe save

以下代码在循环外工作正常,但在循环内部没有产生迭代结果。

 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

现在我想迭代结果并将其保存在data.frame中,以存储在我的文件夹中的所有17个文件。

谢谢和问候, Yogendra

0 个答案:

没有答案