如何在列表的每个元素上应用函数?

时间:2017-08-30 21:08:19

标签: r dplyr apply netcdf

我将所有文件导入列表。

library(ncdf4)

list <- list.files(path=".", pattern="*test*", full.names=TRUE) 
dat = lapply(list, nc_open) 

现在,dat是10个元素的large list。每个元素都有15个NetCDF变量,其中我只想提取一个。

我可以使用以下方法分别从每个元素中提取变量:

dat1var <- ncvar_get(dat[[1]], "temp")
dat2var <- ncvar_get(dat[[2]], "temp")
..
dat10var <- ncvar_get(dat[[10]], "temp")

如何使用lapply或其他方法执行此操作?

我试过这个

lapply(dat, function(x) svar <- ncvar_get(dat[[x]], ncvar))

2 个答案:

答案 0 :(得分:3)

lapply(dat, ncvar_get, "temp")

您可以链接lapply s:

lapply(lapply(list, nc_open), ncvar_get, "temp")

也是

list %>% lapply(nc_open) %>% lapply(ncvar_get, "temp")

答案 1 :(得分:0)

尝试这个年轻的徒弟

library(purrr)
purrr:map(dat,c(i,"temp"))