【问题标题】:How can i List all files with .nc (netcdf) in a folder and extract 1 variable out of 10 variable?我如何在文件夹中列出所有带有 .nc (netcdf) 的文件并从 10 个变量中提取 1 个变量?
【发布时间】:2019-12-19 15:04:25
【问题描述】:

我的任务是从一个文件夹中获取多个相似的 NetCDF (.nc) 文件,并在 10 个变量中堆叠一个 a 变量。

我用过:

a <- list.files(path=ncpath, pattern = "nc$", full.names = TRUE)

这让我得到所有带有.nc 扩展名的文件。

如何进行第二个任务?

我想从一个文件夹中的这些文件数量中获得这个变量a并将它们堆叠起来。

【问题讨论】:

  • 你的第二个任务有点不清楚你想要什么,主要是因为我不知道你所说的“堆栈”是什么意思。听起来您正在进行 10 次分配,或者变量“a”的长度为 10,并且您想从中检索单个元素。
  • 每个 NetCDF 文件有 10 个变量。在这 10 个变量中,我只有一个变量,比如“a”。我的任务是从多个文件中提取这个变量,这样我最后只有一个带有变量“a”的文件。“堆栈、合并、连接、追加”- 通过组合多个光栅层来制作一个单一的光栅文件,每个光栅层只包含一个变量“a”。
  • 这些文件的坐标是否相同?在这种情况下,您可以使用 open_mfdataset 打开它们并仅保存变量 'a'
  • 是的,他们有坐标...感谢您的帮助 Justin 和 Matleo...我设法提取...

标签: r list variables netcdf cdo-climate


【解决方案1】:

如果您只想要 netcdf 文件中的输出,您可以考虑在 linux 的命令行中执行此任务并使用 cdo?

files=$(ls *.nc)   # you might want to be more selective with your wildcard
# this loop selects the variable from each file and puts into file with the var name at the end
for file in $files ; do 
   cdo selvar,varname $file ${file%???}_varname.nc 
done 
# now merge into one file:
cdo merge *_varname.nc merged_file.nc  

您显然需要将 varname 替换为您选择的变量的名称。

【讨论】:

  • thanks..cdo 做得很好,但我无法在 cygwin 和 WLS windows 10 (ubuntu) 中安装 cdo ...这就是为什么尝试在 R
  • 在 windows 10 中安装完整的 linux 子系统现在非常简单,在 google 中输入“在 windows 10 中安装 linux”,例如第一个链接在这里:windowscentral.com/how-install-linux-distros-windows-10 然后按照步骤操作。安装 linux 后,只需打开一个窗口,然后键入 sudo apt-get install cdo,就像在仅 linux 的平台上一样。然后你可以使用这个脚本。这绝对是要走的路,cygwin 在 w10 上基本上已经过时了......
猜你喜欢
  • 2022-10-06
  • 2020-09-03
  • 2020-03-10
  • 1970-01-01
  • 2021-02-28
  • 2013-01-13
  • 1970-01-01
  • 2021-05-14
  • 1970-01-01
相关资源
最近更新 更多