【问题标题】:Identify row in a matrix corresponding to a vector识别矩阵中对应于向量的行
【发布时间】:2014-11-20 18:05:01
【问题描述】:

假设一个矩阵包含所有长度为r的位串并且是有序的。

library(gtools)
mat<-permutations(n = 2, r = 5, v = c(0,1), repeats.allowed = TRUE)
mat<-cbind(mat, round(runif(nrow(mat)), digits = 2))

还有几个向量,每个向量都有r元素:

r=5
vec<-t(replicate(100,sample(c(0,1),5,replace=T)))

对于每个向量(即vec 中的行)我想识别mat 中的相应行

注意:我想列出每一行的结果,而不仅仅是 unique 元素。

有没有不使用 for 循环的有效方法?

【问题讨论】:

    标签: r matrix


    【解决方案1】:

    试试

    indx1 <- do.call(`paste0`,as.data.frame(mat[,-6]))
    indx2 <- do.call(`paste0`, as.data.frame(vec))
    sapply(indx2, function(x) mat[indx1 %in% x,6])
    

    【讨论】:

    • 这对我的目的来说几乎是好事。唯一的事情是我需要知道'vec'的每一行'mat'中最后一列的值。在当前设置中,我无法获取“vec”中每一行的此信息,因为它仅列出了 mat 中的唯一元素
    • 所以基本上输出应该是'vec'中的向量的顺序。输出的第一行应该对应'vec'的第一行,依此类推。
    • 是的,我明白了,但有没有办法让它不是唯一的,而是对应顺序的所有行?
    猜你喜欢
    • 2015-04-23
    • 2019-11-09
    • 2023-04-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-12-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多