我有一个矩阵,如下所示
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
答案 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))