R矩阵得到行号和列号以及实际值

时间:2015-07-23 14:37:40

标签: r for-loop matrix

我有一个矩阵,如下所示

 B = matrix( 
   c(2, 4, 3, 1, 5, 7), 
   nrow=3, 
   ncol=2)

 B             # B has 3 rows and 2 columns 
 #    [,1] [,2] 
 #[1,]    2    1 
 #[2,]    4    5 
 #[3,]    3    7

我想创建一个包含3列的data.frame:行号,列号和上面矩阵的实际值。我正在考虑写2循环。有没有更有效的方法来做到这一点?

我想要的输出(我只显示下面的前两行)

rownum columnnum value
1 1 2
1 2 1

2 个答案:

答案 0 :(得分:4)

尝试

DTcars<-as.data.table(mtcars)
ns<-names(DTcars)
for(j in 1:length(ns)){
  DTcars[ns[j]>10]<-DTcars[20,ns[j]]
}

或者

cbind(c(row(B)), c(col(B)), c(B))

根据@ nicola的评论,所需的输出可能是行主要顺序。在这种情况下,采取矩阵的转置并执行相同的

library(reshape2)
melt(B)

答案 1 :(得分:0)

data.frame(which(B==B, arr.ind=TRUE), value=as.vector(B))