繁体   English   中英

R:向量中的索引矩阵逐行

[英]R: Index matrix row-wise in vectors

我有一个只包含字符元素的向量

v <- c("A","B","C")

一个仅包含逻辑元素的矩阵,其宽度等于v的长度且任意长度:

> M <- matrix(c(TRUE,FALSE,TRUE,FALSE,TRUE,TRUE),ncol=3,byrow=TRUE)
> M
      [,1]  [,2] [,3]
[1,]  TRUE FALSE TRUE
[2,] FALSE  TRUE TRUE

现在,我想将M每一行索引为v ,折叠,并获得一个向量r每个向量的一个元素在一个字符表达式中包含M的对应行。 在给出的示例中, r的元素为

> r
"A C" "B C"

我可以使用以下方法分别为每一行(或在循环中)执行此操作

r[i] <- paste(v[as.logical(M[i,])], collapse="")

但希望有一个更有效的解决方案可立即处理整个矩阵。

我们可以将applyMARGIN=1

apply(M, 1, function(x) paste(v[x], collapse=' '))
#[1] "A C" "B C"

数据

 M <- matrix(c(TRUE,FALSE,TRUE,FALSE,TRUE,TRUE),ncol=3, byrow=TRUE)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM