【问题标题】:Reorder columns in multidimensional array in R重新排序R中多维数组中的列
【发布时间】:2020-01-06 10:07:29
【问题描述】:

我有一个看起来像

的 3D 数组
 dat <- array(1:1500, dim = c(10,30,5))

R 中有 10 行、30 列和 5 页。我想操纵dat 以便首先移动最后一列。更一般地说,如何在保持数据结构的同时随机重新排序所有列?

【问题讨论】:

  • dat[,c(30,1:29),]
  • 哦,够了吗?我觉得有点傻!谢谢!

标签: r arrays sorting


【解决方案1】:

很简单,只要你知道怎么做

dat <- array(1:60, dim=c(3, 10, 2))

# move last column first
dat[,c(10, 1:9),]
# , , 1
# 
#      [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10]
# [1,]   28    1    4    7   10   13   16   19   22    25
# [2,]   29    2    5    8   11   14   17   20   23    26
# [3,]   30    3    6    9   12   15   18   21   24    27
# 
# , , 2
# 
#      [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10]
# [1,]   58   31   34   37   40   43   46   49   52    55
# [2,]   59   32   35   38   41   44   47   50   53    56
# [3,]   60   33   36   39   42   45   48   51   54    57

# arrange columns randomly
dat[,sample(dim(dat)[2]),]
# , , 1
# 
#      [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10]
# [1,]    7    1   25   28   19    4   10   22   13    16
# [2,]    8    2   26   29   20    5   11   23   14    17
# [3,]    9    3   27   30   21    6   12   24   15    18
# 
# , , 2
# 
#      [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10]
# [1,]   37   31   55   58   49   34   40   52   43    46
# [2,]   38   32   56   59   50   35   41   53   44    47
# [3,]   39   33   57   60   51   36   42   54   45    48
# 

【讨论】:

    猜你喜欢
    • 2012-08-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多