如何沿1维反转存储在NetCDF中的多维数组?

时间:2017-10-16 11:42:48

标签: arrays r multidimensional-array netcdf netcdf4

我的netCDF包含以下形状的多维数组:

[1:424,1:412,1:3,1:130]

..我想沿着第二维反转并得到:

[1:424,412:1,1:3,1:130]

我试过了:

test_object <- nc_open("~/work/macro/COOR_2_INDICES/test.nc")
hwmid <- ncvar_get(test_object)

hwmid<-hwmid[,412:1,,]

nc_close( test_object )

..但这并没有反转对象,也没有任何错误。

非常感谢提前! 马立克

2 个答案:

答案 0 :(得分:0)

建议对象是数组类型,可以在下面的三维示例中按如下方式更改incices的顺序:

> three_d_array <- array(
+   1:8,
+   dim = c(2, 2, 2),
+   dimnames = list(
+     c("one", "two"),
+     c("ein", "zwei"),
+     c("un", "deux")
+   )
+ )
> three_d_array[,1:2,]
, , un

    ein zwei
one   1    3
two   2    4

, , deux

    ein zwei
one   5    7
two   6    8

> three_d_array <- three_d_array[,2:1,]
> three_d_array
, , un

    zwei ein
one    3   1
two    4   2

, , deux

    zwei ein
one    7   5
two    8   6

类似的行为也应该在更高的维度上发生。

答案 1 :(得分:-1)

请使用您的代码(https://stackoverflow.com/help/mcve)提供一些可重现性最小的示例数据。

在您的代码中,您将数据读入R工作区并反转数据,但您从未将其写回NetCDF文件。 假设您的变量被称为&#34; hwmid&#34;在NetCDF文件中,您可以在使用反转后写入文件:

ncvar_put(nc = test_object,
    varid = "hwmid",
    vals = hwmid,
    start = c(1,1,1,1),
    count = c(424, 412, 3, 130))