2017-10-16 24 views
0

IはnetCDFの形状を以下の多次元配列を含有している:1次元に沿ってNetCDFに格納された多次元配列を逆変換する方法は?

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

を..and Iが2次元に沿って反転して取得したいと思い:

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

Iが試み:

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

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

nc_close(test_object) 

を..butこのオブジェクトを反転させず、また、私はないです取得するエラーが発生しました。

大変ありがとうございます! Marek

答えて

-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)) 
+0

ありがとう...これは間接的に私の質問の他の部分でした - 私はこれも欠落していました...しかし問題は、hwmid <-hwmid [、412:1、 、] ...私はリンクをたどってファイルを共有しています:https://drive.google.com/drive/folders/0ByPJ-UkVdXZgUl9TRmdwb2hDaXc – Marek

+0

最小限の再現可能な例(例えばHeikkiの回答)を提供する方が、全体のデータセット。配列を使うなら(Heikkiの答えのように)、並べ替えはうまくいくはずです。なぜdownvote? –

+0

もう一度、こんにちは、私はかなりStackoverflowに新しいです..私が誤って何かを落札した場合、私は心からお詫び申し上げます...それは間違っていた!!!! – Marek

0

オブジェクトの型が配列であることを示唆し、incicesの順序は次のように変更することができます以下の3次元の例では次のようになります。

> 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 

類似の動作は高次元でも行われます。

+0

これは私が望んでいたものではありませんでした(次元を交換する)...私はちょうど1次元(緯度)を逆転させる必要があります...基本的に私はヨーロッパの "逆さま"を持っています...しかし、とにかくあなたの努力のために多くの感謝! – Marek

関連する問題