使用 ncdf4::ncvar_get 时如何指定维度顺序?

2023-12-14

继上一个问题之后(从 netCDF 更快地读取时间序列?)我重新排列了我的 netCDF 文件以提供快速的时间序列读取(github上的脚本最终会被清理......).

简而言之,为了使阅读速度更快,我重新排列了尺寸lat, lon, time to time, lat, lon。现在,我现有的脚本崩溃了,因为它们假设尺寸始终是lat, lon, time,遵循 ncdf4 文档ncvar_get,对于“开始”参数:

顺序为 X-Y-Z-T(即时间维度在最后)

然而,这种情况并非如此。

此外,通过命令行 netCDF 实用程序列出的变量顺序存在相关的不一致ncdump -h和 R 函数ncdf4::nc_open。第一个表示维度按预期(纬度、经度、时间)顺序排列,而后者则首先看到时间顺序的维度(时间、纬度、经度)。

作为一个最小的示例,请下载文件test.nc and run

bash-$ ncdump -h .nc
bash-$ R
R> library(ncdf4)
R> print(nc_open("test.nc")

我想要做的是从变量“lwdown”中获取记录5-15

my.nc <- nc_open("test.nc")

但这不起作用,因为 R 首先看到时间维度,所以我必须将脚本更改为

ncvar_get(my.nc, "lwdown", start = c(5, 1, 1), count = c(10, 1, 1))

更新我的脚本和函数也不错,只是我希望能够从文件中读取数据,而不管维度顺序如何。

除了有没有办法概括这个函数,使其独立于维度顺序工作?


在提出问题时,我想出了这个解决方案,尽管仍有改进的空间:

我能得到的最接近的是打开文件并以这种方式查找顺序:

my.nc$var$lwdown$dim[[1]]$name
[1] "time"
my.nc$var$lwdown$dim[[2]]$name
[1] "lon"
my.nc$var$lwdown$dim[[3]]$name
[1] "lat"

这有点令人不满意,尽管它让我找到了这个解决方案:

如果我想从c(lat = 1, lon = 1, time = 5),但是ncvar_get期望任意顺序,我可以说“

start <- c(lat = 1, lon = 1, time = 5)
count <- c(lat = 1, lon = 1, time = 10)
dim.order <- sapply(my.nc$var$lwdown$dim, function(x) x$name)

ncvar_get(my.nc, "lwdown", start = start[dim.order], count = count[dim.order])
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 ncdf4::ncvar_get 时如何指定维度顺序? 的相关文章

  • 数据集子集的回归

    我想做以下事情并需要一些帮助 分别计算 身高 与 年龄 的斜率和截距 lm Height Age 一 每个人 二 性别 并创建一个包含结果 斜率和截距 的表 我可以使用 申请 吗 在下一步中 我想做一个统计测试 以确定性别之间的斜率和截距是
  • 中断、保存并稍后继续循环的最佳方法

    事情是这样的 我有一个需要几天时间才能运行的循环 我想中断循环 检查进度 然后稍后继续 目前 我正在使用以下内容 for i in 1 100000 Sys sleep i 2 5 print i write csv i i csv 我检查
  • 在 R/ggplot2 中将字符串转换为函数参数的最佳方法? [复制]

    这个问题在这里已经有答案了 我正在开发一个闪亮的应用程序 用户可以选择可以使用 ggplot2 绘制哪些变量 但是我完全不确定将字符串 即要绘制的变量的名称 转换为合适的函数参数的最佳方法 考虑以下非常人为的 有效的示例 df lt dat
  • R:使用 dcast 时包含没有条目的因子

    我在数据帧上使用 reshape2 函数 dcast 其中一个变量是某些级别未出现在数据框中的因素 但我会将所有值包含在创建的新列中 例如 假设我运行以下命令 library reshape2 dataDF lt data frame id
  • 使用 geom_bar 和 stat="identity" 绘制平均值的 hline

    我有一个条形图 其中确切的条形高度位于数据框中 df lt data frame x LETTERS 1 6 y c 1 6 1 6 1 g rep x c a b each 6 ggplot df aes x x y y fill g g
  • 删除 R 中的胡须和异常值

    我有连续的数据 我想用它来绘制R s plotly with a box or violin没有异常值和胡须的绘图 set seed 1 df lt data frame group c rep g1 500 rep g2 700 rep
  • 匹配向量内的向量

    I have vec1 lt c 0 0 0 1 1 0 1 1 1 0 0 1 vec2 lt c 1 1 我预计 magicFUN x vec1 y vec2 1 4 7 8 这意味着我想要一个完整向量在另一个向量内的位置 match
  • 不同的分位数:箱线图与小提琴图

    require ggplot2 require cowplot d iris ggplot2 ggplot d aes factor 0 Sepal Length geom violin fill black alpha 0 2 draw
  • 使用梯度下降(最速下降)估计线性回归

    示例数据 X lt matrix c rep 1 97 runif 97 nrow 97 ncol 2 y lt matrix runif 97 nrow 97 ncol 1 我已经成功创建了成本函数 COST lt function th
  • corr.test 与 cor.test p 值

    我正在尝试使用 psych 包 psych 1 6 9 中的 corr test 但在使用 method spearman 时 它似乎给出了与 cor test 不同的 p 值 相关系数相同 但 p 值不同 我整理了一些示例代码和输出 如下
  • ts(x) 中的错误:“ts”对象必须有一个或多个观察结果

    当我使用进行预测时forecast库 我注意到以下代码没有按预期运行 library forecast library dplyr df1 lt data frame gp gl 20 5 dt seq 1 100 get lt funct
  • 如何在shell脚本中运行R代码?

    我有一个 R 文件 myfile R 我想使用 shell 脚本来运行它 我怎样才能做到这一点 我试过这个 bin bash Rscript myfile R 但它给了我这个错误 Rscript 找不到命令 我也尝试过这个 bin bash
  • R 包“raster”在搜索“terra”最新版本时无法上传

    我正在 Windows 10 中使用 RStudio 2021 09 2 中的 R 4 1 2 工作 我正在处理空间数据 包括矢量和栅格 但三天前命令库 栅格 开始向我发出此警告 错误 loadNamespace i c lib loc l
  • 插值时间序列

    我有两组具有不同时间戳的数据 一组数据包含校准数据 另一组包含样本数据 校准的频率比样品少得多 我想做的是将校准数据 低频 插值到采样时间序列 高频 上 sam lt textConnection time value 01 00 52 2
  • 在 R 中使用科学记数法和 xtable

    我将 data frame 传递给 xtable dat table lt xtable dat 1 20 digits 10 我宁愿使用科学记数法 而不是像那样显示数字 我该怎么做呢 看过了 但我发现的只是R 格式化xtable中的数字
  • 将一个大的 xlsx 文件导入到 R 中?

    我想知道是否有人知道从 大 xlsx 文件 20Mb 导入数据的方法 我尝试使用 xlsx 和 XLConnect 库 不幸的是 两者都使用 rJava 我总是收到相同的错误 gt library XLConnect gt wb lt lo
  • 整理包中的字段说明

    我很抱歉 因为我知道这个答案可能出现在编写 R 包的手册中 但在我阅读和查看其他包的整理字段时 我无法 100 弄清楚该字段的用途 用简单的语言 我的是英语 来看 包的描述文件中的整理字段有什么作用 人们想在那里放什么 我认为这来自于某个时
  • 生成与现有变量具有预定义相关性的二进制变量

    对于模拟研究 我想生成一组随机变量 连续变量和二元变量 这些变量与已经存在的变量具有预定义的关联binary变量 此处表示为x 对于这篇文章 假设x是按照下面的代码生成的 但请记住 在现实生活中 x是一个已经存在的变量 set seed 1
  • 用于检查和批量线性模型的数据表选项

    我想知道是否有data table用于从数据集中批量处理线性模型并首先进行检查的选项 我需要对每个唯一标识符运行一堆线性模型 但首先我需要进行检查 对于每个唯一的 id 和年份 我需要检查是否有至少 24 个月的先前每月数据 但不超过 60
  • 修改x轴刻度标签

    我正在尝试更改由生成的箱线图的 x 轴刻度标签ggplot2 x 轴是一个分类变量 HabFac 我想要的是将其刻度更改为 6 个化学品 A E 下面是我的代码 raw data read table Read data p TT ggpl

随机推荐

  • NextJS 中 :global() css 模块选择器不纯的问题

    因此 我正在将应用程序从 CRA 迁移到 NextJS 并且我遇到了某些组件和页面的 module scss 文件的错误 Syntax error Selector global label primary is not pure pure
  • ssis xml 配置 - 配置覆盖包 - ssis 是否会在您不通知的情况下更改配置?

    昨天我工作了一整天 试图消除 XML 配置文件中错误连接字符串的影响 我检查了每个包 删除了有问题的连接管理器并使用正确的服务器名称重新添加它 每次我这样做时 我都会通过删除它来显式更新配置 然后使用覆盖选项重新添加它 但后来我犯了一个可怕
  • MongoDB:管理员无权执行命令

    当我使用时 我的 mongo shell 给了我这个错误show dbs命令 没有管理员权限执行命令 我尝试使用创建用户 db createUser user siteUserAdmin pwd password roles role us
  • 从环境中获取 xts 对象

    我已将 xts 对象存储在环境中 当这些对象存储在环境中时 我可以对它们进行子集化 即 就地 对它们进行操作吗 我可以通过引用这些对象来提取它们吗colname 下面是我要表达的内容的示例 environment in which to s
  • JavaScript 中的 numpy.random.choice?

    Numpy random choice 是一个很好的简单函数 它允许您根据某种概率分布对整数数组进行采样 gt gt gt np random choice 5 3 p 0 1 0 0 3 0 6 0 array 3 3 0 javascr
  • 如何在Spring Security中使用具有authentication-success-handler-ref等效功能的自定义过滤器

    我想将一些带有登录详细信息的参数传递给 spring security 例如某些项目 ID 然后我想根据用户类型重定向到页面 为此我正在使用自定义过滤器发送附加参数 我正在使用重定向身份验证成功处理程序参考 我的问题是 我在使用时遇到位置冲
  • 参数和局部变量有什么区别?

    为看起来一定像的事情道歉very愚蠢的问题 我目前正在通过 codecadamy 工作 这让我很失望 var greeting function name name sausage console log name greeting nam
  • 模式验证器对于 IP 地址正则表达式无效

    我正在使用以下正则表达式来验证IP 地址模式 b 25 0 5 2 0 4 0 9 01 0 9 0 9 3 25 0 5 2 0 4 0 9 01 0 9 0 9 b 我也在a中检查过正则表达式测试器而且效果很好 但是 当我在模式验证器中
  • 在 yii2 中获取日期时间时时间错误

    当我在 yii2 项目中获取日期时间时遇到问题 当我得到日期时间时 日期是正确的 但时间是错误的 我执行我的代码 结果是 2016 05 02 12 30 28 而我笔记本电脑上的时间是 19 30 有什么问题 我利用在印度尼西亚的时间 这
  • Java程序拥有16GB虚拟内存并且不断增长:这是一个问题吗?

    在 Mac OSX 5 8 上 我有一个 Java 程序 它以 100 CPU 运行很长一段时间 几天或更长时间 它是一个分析并发程序的模型检查器 所以这或多或少是预期的 然而 它的虚拟内存大小 如 OSX 的活动监视器中所示 在一天左右后
  • 使用 WCF 中的架构进行消息验证

    我想要的是用很少的属性 例如最小 最大 字符串长度等 来装饰我的数据契约 并获取为我的 SOAP 非 net 客户端生成的 XML 模式 经过在互联网上的一些研究 我发现了以下文章 http wcfsecurity codeplex com
  • 如何将nodeJS项目托管到firebase?

    我正在为该项目使用 Node Express 和更多其他依赖项 我想知道如何在 firebase 上托管这个项目 我的项目将有控制器 视图和任何其他文件夹以使项目成为可能 它已经有像 pug handlebars 这样的视图引擎 在线教程仅
  • C++ 中具有向量属性的 MPI 发送结构

    我想发送一个具有向量属性的结构 typedef struct int id vector
  • ggplot2 代码运行并更新绘图,但实际上没有显示数据

    我正在尝试使用生成图表ggplot2虽然我能够生成我想要使用的图表plot 当我运行下面的 ggplot 代码时 它会显示正确的轴 但没有数据或比例 数据看起来像这样 data lt data frame area c alpha alph
  • 由于 PreviewMouseLeftButtonDown,数据网格内的按钮未被触发

    我正在开发 WPF 应用程序 根据要求 我想在数据网格中显示项目列表 每行还有一个 删除 按钮 使用这个按钮我们可以删除相应的项目 我还想要网格的拖放功能 即用户可以向上 向下移动行 我在用 PreviewMouseLeftButtonDo
  • Codeigniter,空白页,没有错误[关闭]

    很难说出这里问的是什么 这个问题模棱两可 含糊不清 不完整 过于宽泛或言辞激烈 无法以目前的形式合理回答 如需帮助澄清此问题以便重新打开 访问帮助中心 public function newreg username this gt inpu
  • headless eclipse 的 config.ini 设置

    From 这个帖子 当我尝试执行无头 Eclipse 代码时出现此错误消息 java lang RuntimeException Could not find framework at org eclipse equinox launche
  • 是否有一种机制可以禁用插入表?

    我有一个表 它的存在纯粹是为了充当某些逻辑的数组 该表应该只有一行 否则我的逻辑将失败 是否有任何 DDL 命令可以禁用插入表 截至目前 我已经插入了逻辑所需的 一行 数据 现在计划创建一个插入后触发器来删除新输入的记录 二 但是我注意到有
  • 使用 Pyinstaller 编译 Gekko

    我想知道是否可能 或者是否有人有任何经验 用 pyinstaller 将 gekko 优化包编译成 exe 作为测试用例 我使用来自 gekko 优化网站的 HS 71 Benchmark 用例 https gekko readthedoc
  • 使用 ncdf4::ncvar_get 时如何指定维度顺序?

    继上一个问题之后 从 netCDF 更快地读取时间序列 我重新排列了我的 netCDF 文件以提供快速的时间序列读取 github上的脚本最终会被清理 简而言之 为了使阅读速度更快 我重新排列了尺寸lat lon time to time