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

时间:2016-02-08 13:44:58

标签: r list matrix indexing

我有一个只包含字符元素的向量,比如说

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="")

但希望能有更高效的解决方案立即处理完整矩阵。

1 个答案:

答案 0 :(得分:1)

我们可以将int main() { C c({1,2,3,4},{10,20,30,40}); // a={1,2,3,4}; b={10,20,30,40} cout << "3*30 "<<c(2,2); // c(2, 2) = a[2]*b[2] = 3*30 = 90 return 0; } apply

一起使用
MARGIN=1

数据

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