【问题标题】:How can I extract data from a list without pulling additional dimensions with it in R?如何从列表中提取数据而不用 R 中的其他维度提取数据?
【发布时间】:2020-11-02 15:33:04
【问题描述】:

我有一个在 R 中通过聚合多个 .nc 文件 (cmip6) 的温度创建的列表。

我想提取单个时间步长(月)的“数据”,其大小为 1 x 256 x 512,因为我想将其写入新文件。

我的问题是,当我尝试访问数据时,它具有与之关联的纬度和经度维度。

data_extract<- test$Data 返回:

然而,我希望它具有这种结构(这是我使用的其他数据的示例):即只是数据矩阵,不包括纬度属性。

抱歉,我无法制作可重现的示例,因为我不知道如何创建此场景(当您尝试访问 .nc 文件中的原始数据时,其中包含其他维度)。此特定列表是使用以下代码创建的:

#-------------------COLLAPSE ALL THE DATASETS------------
  makeAggregatedDataset(source.dir="C:/Users/Documents/Cmip6/mon/",recursive = T, ncml.file = "test.ncml")
#-------------------CREATE THE DIC FILE------------------
  dictionary <- tempfile(pattern = "dicCDX", fileext = ".dic")
test<-loadGridData("test.ncml","tasmax",dictionary = dictionary)

上面的loadGridData函数可以在Climate4R的LoadeR包中找到(https://github.com/SantanderMetGroup/climate4R)

unname&lt;-unname(test$Data) 不会改变任何东西:

【问题讨论】:

  • unname(test$Data) 工作吗?
  • @Bas No. 结果相同(我将它包含在上面的正文中)。

标签: r multidimensional-array


【解决方案1】:

要删除维度属性,您可以这样做:

attr(data_extract, "dimensions") <- NULL

你也可以使用c来剥离属性

【讨论】:

  • 效果很好,谢谢。有趣的是,“c”如何去除属性?
  • 这是 R 的创建者为 c 做出的设计决定,以剥离属性。 c 的帮助声明“c 有时用于删除除名称之外的属性的副作用”。我个人会推荐第一种方法,因为意图更加明确
猜你喜欢
  • 2012-10-04
  • 1970-01-01
  • 1970-01-01
  • 2016-07-26
  • 1970-01-01
  • 1970-01-01
  • 2021-11-11
  • 2021-05-30
  • 1970-01-01
相关资源
最近更新 更多