我的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 )
..但这并没有反转对象,也没有任何错误。
非常感谢提前! 马立克
答案 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))