用r对矢量重新排序多维数组

时间:2014-11-10 22:12:56

标签: r multidimensional-array

在R中,我想重新排序一个多维数组,以匹配与多维数组具有相同名称但顺序不同的矢量顺序。

我有一个数组:

output.zero = array(dim=c(172, 11688, 13), dimnames = list(seq(from=2454, to=2625),NULL, c("day","month","year","snowpack","pet","precip","snowfall","wy","yd","wyd","snowmelt","rainfall","recharge")))

> attributes(output.zero)
$dim
[1]   172 11688    13

$dimnames
$dimnames[[1]]
  [1] "2454" "2455" "2456" "2457" "2458" "2459" "2460" "2461" "2462" "2463" "2464" "2465" "2466" "2467" "2468" "2469" "2470"
 [18] "2471" "2472" "2473" "2474" "2475" "2476" "2477" "2478" "2479" "2480" "2481" "2482" "2483" "2484" "2485" "2486" "2487"
 [35] "2488" "2489" "2490" "2491" "2492" "2493" "2494" "2495" "2496" "2497" "2498" "2499" "2500" "2501" "2502" "2503" "2504"
 [52] "2505" "2506" "2507" "2508" "2509" "2510" "2511" "2512" "2513" "2514" "2515" "2516" "2517" "2518" "2519" "2520" "2521"
 [69] "2522" "2523" "2524" "2525" "2526" "2527" "2528" "2529" "2530" "2531" "2532" "2533" "2534" "2535" "2536" "2537" "2538"
 [86] "2539" "2540" "2541" "2542" "2543" "2544" "2545" "2546" "2547" "2548" "2549" "2550" "2551" "2552" "2553" "2554" "2555"
[103] "2556" "2557" "2558" "2559" "2560" "2561" "2562" "2563" "2564" "2565" "2566" "2567" "2568" "2569" "2570" "2571" "2572"
[120] "2573" "2574" "2575" "2576" "2577" "2578" "2579" "2580" "2581" "2582" "2583" "2584" "2585" "2586" "2587" "2588" "2589"
[137] "2590" "2591" "2592" "2593" "2594" "2595" "2596" "2597" "2598" "2599" "2600" "2601" "2602" "2603" "2604" "2605" "2606"
[154] "2607" "2608" "2609" "2610" "2611" "2612" "2613" "2614" "2615" "2616" "2617" "2618" "2619" "2620" "2621" "2622" "2623"
[171] "2624" "2625"

$dimnames[[2]]
NULL

$dimnames[[3]]
 [1] "day"      "month"    "year"     "snowpack" "pet"      "precip"   "snowfall" "wy"       "yd"       "wyd"      "snowmelt"
[12] "rainfall" "recharge"

我想重新排序dim(output.zero)[1]以匹配neworder向量的顺序:

neworder = c(2597,2598,2599,2600,2601,2602,2603,2604,2605,2606,2607,2608,2609,2610,2611,2612,2613,2614,2615,2616,2617,2618,2619,2620,2621,2622,2623,2624,2625,2539,2540,2541,2542,2543,2544,2545,2546,2547,2548,2549,2550,2551,2552,2553,2554,2555,2556,2557,2558,2559,2560,2561,2562,2563,2564,2565,2566,2567,2568,2569,2570,2571,2572,2573,2574,2575,2576,2577,2578,2579,2580,2581,2582,2583,2584,2585,2586,2587,2588,2589,2590,2591,2592,2593,2594,2595,2596,2481,2482,2483,2484,2485,2486,2487,2488,2489,2490,2491,2492,2493,2494,2495,2496,2497,2498,2499,2500,2501,2502,2503,2504,2505,2506,2507,2508,2509,2510,2511,2512,2513,2514,2515,2516,2517,2518,2519,2520,2521,2522,2523,2524,2525,2526,2527,2528,2529,2530,2531,2532,2533,2534,2535,2536,2537,2538,2454,2455,2456,2457,2458,2459,2460,2461,2462,2463,2464,2465,2466,2467,2468,2469,2470,2471,2472,2473,2474,2475,2476,2477,2478,2479,2480)

1 个答案:

答案 0 :(得分:0)

str( 
   output.zero[ match( neworder, dimnames(output.zero)[[1]]), , ]
   )
 logi [1:172, 1:11688, 1:13] NA NA NA NA NA NA ...
 - attr(*, "dimnames")=List of 3
  ..$ : chr [1:172] "2597" "2598" "2599" "2600" ...
  ..$ : NULL
  ..$ : chr [1:13] "day" "month" "year" "snowpack" ...