【问题标题】:How can I apply a function on every element of a list?如何在列表的每个元素上应用函数?
【发布时间】:2017-08-30 21:08:19
【问题描述】:

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

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

【问题讨论】:

    标签: r dplyr apply netcdf


    【解决方案1】:
    lapply(dat, ncvar_get, "temp")
    

    你可以链接lapplys:

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

    这也是

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

    【讨论】:

      【解决方案2】:

      试试这个年轻的学徒

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

      【讨论】:

      • 不幸的是所有NULL
      • 现在再试一次,伙计
      猜你喜欢
      • 2020-03-18
      • 2011-03-23
      • 2014-09-24
      • 1970-01-01
      • 1970-01-01
      • 2017-11-04
      • 1970-01-01
      相关资源
      最近更新 更多