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

How can I apply a function on every element of a list?

我将所有文件导入到一个列表中。

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))

试试这个小徒弟

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

您可以链接 lapplys:

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

这也是

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