【问题标题】:In R creating vector from specific matrix (dataframe) elements [duplicate]在R中从特定矩阵(数据框)元素创建向量[重复]
【发布时间】:2021-09-01 08:27:59
【问题描述】:

我想从矩阵(或数据框)的某些特定元素中形成一个向量。

我想从这个矩阵的次要对角元素(例如元素矩阵[3,1]、矩阵[2,2]和矩阵[1,3])创建向量。

如果不循环,我怎么能做到这一点?我的任务很大,我想跳过循环。以下命令:

matrix[c(3, 2, 1), c(1, 2, 3)]

而不是向量 c(3, 5, 7) 给了我另一个矩阵。

【问题讨论】:

标签: r dataframe matrix vector


【解决方案1】:

其中任何一个都可以满足您的需求:

x <- matrix(1:9, 3, 3)
x
#      [,1] [,2] [,3]
# [1,]    1    4    7
# [2,]    2    5    8
# [3,]    3    6    9
rc <- seq(ncol(x))
diag(x[rev(rc),])
# [1] 3 5 7
x[cbind(rev(rc), rc)]
# [1] 3 5 7

【讨论】:

  • 使用ncol 可能会更好,因此它适用于任意大的矩阵。
  • 好建议。我已将其添加到答案中。
  • 谢谢亲爱的佩德罗!谢谢大家!这就是我一直在寻找的。我忘了 cbind (((
【解决方案2】:

试试这个

mat <- matrix(1:9, nrow = 3, byrow = T)
diag(apply(mat,2,rev))

【讨论】:

    【解决方案3】:

    你的矩阵:

    mymatrix <- matrix(data= c(1,2,3,4,5,6,7,8,9), nrow = 3, byrow = T)
    
    #     [,1] [,2] [,3]
    #[1,]    1    2    3
    #[2,]    4    5    6
    #[3,]    7    8    9
    

    你可以像这样得到对角线:

    diag(mymatrix)
    # [1] 1 5 9
    

    【讨论】:

    • 作者要求矩阵的对角线的问题。这将返回对角线。
    猜你喜欢
    • 1970-01-01
    • 2021-08-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-11-11
    • 2018-02-11
    • 2023-03-30
    相关资源
    最近更新 更多