0

我有 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 )

..但这不会反转对象,我也没有收到任何错误。

非常感谢提前!马立克

4

2 回答 2

0

建议对象是数组类型,在下面的三维示例中可以改变切痕的顺序如下:

> 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

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

于 2017-10-16T12:12:36.860 回答
-1

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

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

ncvar_put(nc = test_object,
    varid = "hwmid",
    vals = hwmid,
    start = c(1,1,1,1),
    count = c(424, 412, 3, 130))
于 2017-10-16T12:11:06.173 回答