从保持列表格式的文件列表中分配变量名称

问题描述 投票:0回答:1

我正在从循环它们的文件夹中打开netcdf文件列表,这样:

nfiles <- 10
datL <- list.files(/home/myname/filedir/,pattern='*nc')
for (i in 1:nfiles){
    dat = nc_open(datL[[i]])

要提取变量并将其名称保存在我执行的netcdf文件中:

    allvars <- as.list(names(dat[['var']]))
    for (k in 1:length(unlist(allvars)) ) {
        assign(allvars[[k]],ncvar_get(dat(allvars[[k]])) } }

所有文件各有约50个变量,但大多数文件具有相同的变量名。我想做的只是无法解决,是如何将列表号保留在变量的命名中。因此,举个例子,假设在netcdf文件中有一个名为rain的变量,assign(allvars[[k]])只会指定名称rain。我想要的是为变量名称分配列表编号,使其为rain[[i]]assign(paste0(allvars[[k]],as.list(i)),ncvar_get...etc)将变量写为rain1rain2,但我更喜欢[[格式。

r list assign
1个回答
0
投票

您可以使用list2env()将命名变量列表分配给全局环境,例如:

l <- list(a = 1, b = 2:4, p = pi, ff = gl(3, 4, labels = LETTERS[1:3]))
list2env(l, .GlobalEnv)
ls()
[1] "a"  "b"  "ff" "l"  "p" 

您也可以查看数据科学的R书,特别是关于many models的部分。它引入了嵌套数据框的概念,可以处理许多类似的子数据集和许多子模型。

© www.soinside.com 2019 - 2024. All rights reserved.