鉴于此data.frame:'sample',代表物种之间的成对胜负:
sp1<-c(0,1,0)
sp3<-c(1,2,2)
sp5<-c(3,1,0)
sample<-as.data.frame(cbind(sp1,sp3,sp5))
rownames(sample)<-c("sp1","sp6","sp8")
应该是这样的:
sp1 sp3 sp5
sp1 0 1 3
sp6 1 2 1
sp8 0 2 0
如何修改'sample'以使其具有与rownames相同的列名,反之亦然,并用零填充添加的列或行,以使数据帧对称,如下所示? (我更喜欢数据帧,因为我担心我对矩阵不好):
sp1 sp3 sp5 sp6 sp8
sp1 0 1 3 0 0
sp3 0 0 0 0 0
sp5 0 0 0 0 0
sp6 1 2 1 0 0
sp8 0 1 0 0 0
真实数据有大约150行和列,所以我真的不想要 用excel手动完成。这种格式需要应用一些有关竞争物种相互作用结果的其他函数(列:胜利,行:损失)。
答案 0 :(得分:3)
您显示的输出似乎不是对称矩阵,但如果所需的输出是您正在寻找的,这里有一种方法可以通过使用{{1 }和stack
。制作“正方形”矩阵的关键是确保行和列名称是“因子”。
xtabs