2017-10-16 26 views
0

I는 netCDF의는 다음 형태의 다차원 배열을 포함 가지고1 차원을 따라 NetCDF에 저장된 다차원 배열을 반전하는 방법은 무엇입니까?

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

가 .. 그리고 I는 2 차원에 따른 반전 얻을하고자 :

[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) 

개체를 반전하지 않고, 또한 내가 아니라고 도망 오류가 발생했습니다.

미리 감사드립니다. 마렉

답변

-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 <-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