Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/80.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 向列添加行的组合_R_Matrix - Fatal编程技术网

R 向列添加行的组合

R 向列添加行的组合,r,matrix,R,Matrix,我有17个430阶的方阵和一个92235 x 34维的大矩阵 对于每个正方形矩阵,我希望将每行的值(从1到430)添加到大矩阵中的一列中,只取主对角线上方的值。因此[1,2][1,3][1,4]…[1430][2,3][2,4]…[2430]…[429430]——因此,大矩阵的92235行长度(此处显示了步骤1的示例) 方阵是转置的 重复步骤1,但将行值添加到大矩阵中的下一列 重复步骤1-3 16次,直到填充大矩阵 我该怎么做呢 短暂性脑缺血发作 编辑以供评论 mat = matrix(1:25

我有17个430阶的方阵和一个92235 x 34维的大矩阵

  • 对于每个正方形矩阵,我希望将每行的值(从1到430)添加到大矩阵中的一列中,只取主对角线上方的值。因此[1,2][1,3][1,4]…[1430][2,3][2,4]…[2430]…[429430]——因此,大矩阵的92235行长度(此处显示了步骤1的示例)

  • 方阵是转置的

  • 重复步骤1,但将行值添加到大矩阵中的下一列

  • 重复步骤1-3 16次,直到填充大矩阵

  • 我该怎么做呢

    短暂性脑缺血发作

    编辑以供评论

    mat = matrix(1:25,5,5)
    mat
         [,1] [,2] [,3] [,4] [,5]
    [1,]    1    6   11   16   21
    [2,]    2    7   12   17   22
    [3,]    3    8   13   18   23
    [4,]    4    9   14   19   24
    [5,]    5   10   15   20   25
    
    mat2 = cbind(mat[upper.tri(mat)])
    mat2
          [,1]
    [1,]    6
    [2,]   11
    [3,]   12
    [4,]   16
    [5,]   17
    [6,]   18
    [7,]   21
    [8,]   22
    [9,]   23
    [10,]  24
    
    这将先读取列,然后读取行。相反,我希望先读取行,然后读取列,这样结果应该是:

          [,1]
    [1,]    6
    [2,]   11
    [3,]   16
    [4,]   21
    [5,]   12
    [6,]   17
    [7,]   22
    [8,]   18
    [9,]   23
    [10,]  24
    

    如果有17个方阵('m1'、'm2'、…'m17'),请将它们保存在
    列表中,然后使用
    upper.tri
    提取对角线上方的元素,并使用
    转置中的元素提取
    cbind

     lst1 <- mget(paste0('m', 1:17))
     Out <- do.call(cbind,lapply(lst1, function(x) {x1 <- t(x)
                       cbind(x[upper.tri(x)], x1[upper.tri(x1)]) }))
     dim(Out)
    #[1] 92235    34
    

    如果有17个方阵('m1'、'm2'、…'m17'),请将它们保存在
    列表中,然后使用
    upper.tri
    提取对角线上方的元素,并使用
    转置中的元素提取
    cbind

     lst1 <- mget(paste0('m', 1:17))
     Out <- do.call(cbind,lapply(lst1, function(x) {x1 <- t(x)
                       cbind(x[upper.tri(x)], x1[upper.tri(x1)]) }))
     dim(Out)
    #[1] 92235    34
    

    如果有17个方阵('m1'、'm2'、…'m17'),请将它们保存在
    列表中,然后使用
    upper.tri
    提取对角线上方的元素,并使用
    转置中的元素提取
    cbind

     lst1 <- mget(paste0('m', 1:17))
     Out <- do.call(cbind,lapply(lst1, function(x) {x1 <- t(x)
                       cbind(x[upper.tri(x)], x1[upper.tri(x1)]) }))
     dim(Out)
    #[1] 92235    34
    

    如果有17个方阵('m1'、'm2'、…'m17'),请将它们保存在
    列表中,然后使用
    upper.tri
    提取对角线上方的元素,并使用
    转置中的元素提取
    cbind

     lst1 <- mget(paste0('m', 1:17))
     Out <- do.call(cbind,lapply(lst1, function(x) {x1 <- t(x)
                       cbind(x[upper.tri(x)], x1[upper.tri(x1)]) }))
     dim(Out)
    #[1] 92235    34
    

    这太棒了!但它似乎将x[upper.tri(x)]绑定到大型矩阵的列,读取[1,2][1,3][2,3][1,4][2,4][3,4]。。。所以先列后行。我如何先读行再读列,所以[1,2][1,3][1,4].[1430][2,3][2,4].[2430].@pophahpop请用一个小数据更新你的帖子(如评论中所示)以及基于此的预期结果。我不明白你的意思comment@DavidArenburg我认为它应该作为一个单独的答案,对吗?这太棒了!但它似乎将x[upper.tri(x)]绑定到大型矩阵的列,读取[1,2][1,3][2,3][1,4][2,4][3,4]。。。所以先列后行。我如何先读行再读列,所以[1,2][1,3][1,4].[1430][2,3][2,4].[2430].@pophahpop请用一个小数据更新你的帖子(如评论中所示)以及基于此的预期结果。我不明白你的意思comment@DavidArenburg我认为它应该作为一个单独的答案,对吗?这太棒了!但它似乎将x[upper.tri(x)]绑定到大型矩阵的列,读取[1,2][1,3][2,3][1,4][2,4][3,4]。。。所以先列后行。我如何先读行再读列,所以[1,2][1,3][1,4].[1430][2,3][2,4].[2430].@pophahpop请用一个小数据更新你的帖子(如评论中所示)以及基于此的预期结果。我不明白你的意思comment@DavidArenburg我认为它应该作为一个单独的答案,对吗?这太棒了!但它似乎将x[upper.tri(x)]绑定到大型矩阵的列,读取[1,2][1,3][2,3][1,4][2,4][3,4]。。。所以先列后行。我如何先读行再读列,所以[1,2][1,3][1,4].[1430][2,3][2,4].[2430].@pophahpop请用一个小数据更新你的帖子(如评论中所示)以及基于此的预期结果。我不明白你的意思comment@DavidArenburg我认为这应该作为一个单独的答案,对吗?