【问题标题】:How can I extract matrix elements corresponding to column list如何提取与列列表对应的矩阵元素
【发布时间】:2013-03-01 02:16:50
【问题描述】:

使用 apply 函数似乎应该很简单,但我发现自己在努力解决它。

我有一个数据矩阵(数据框也可以):

u <- matrix(sample(seq(4),20,T),5,4)
u
     [,1] [,2] [,3] [,4]
[1,]    1    2    4    2
[2,]    4    3    2    2
[3,]    3    3    3    1
[4,]    3    2    4    4
[5,]    4    1    3    4

假设我只是想使用元素(如 excel 中的间接) 列 j 从每一行中选择一个对应的列值。

例如给定 col(j) = 3

第 1 行将获取对应于 row=1,col(j=3)=4 的元素并返回 2 (row(1):col(4))

第 2 行将获得元素 对应 row=2,col(j=3)=2 并返回 3 (row(2):col(2))

...

行 5 将获取对应于 row=5,col(j=3)=3 的元素并返回 3 (行(5),列(3))

我最终得到一个包含这些值的向量 v

【问题讨论】:

    标签: r apply


    【解决方案1】:

    您可以使用矩阵索引:

    i <- seq_len(nrow(u))
    j <- u[, 3]
    u[cbind(i, j)]
    

    【讨论】:

      【解决方案2】:

      我认为以下方法也有效:

      sapply(1:nrow(u), function(i) u[i,u[i,3]])
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-04-28
        • 2022-08-17
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多