我有相等的行和列的数据框/矩阵。我只想提取上三角形或下三角形。
x<-data.frame(matrix(1:25,nrow=5))
colnames(x)<-LETTERS[1:5]
rownames(x)<-LETTERS[1:5]
x[upper.tri(x,diag=F)]
根据此结果,无法说出该值来自列和行的组合。因此,我想在结果中包含行和列属性。像这样的东西:
Col Row Val
B A 6
C A 11
C B 12
...
对于大型相关矩阵,我需要这样做。
谢谢。
最佳答案
首先,为了使事情变得明确,我改变了
colnames(x) <- LETTERS[6:10]
使用
expand.grid
可以得到这样的行和列名称rowCol <- expand.grid(rownames(x), colnames(x))
要从此数据框中获取正确的行,请
labs <- rowCol[as.vector(upper.tri(x,diag=F)),]
df <- cbind(labs, x[upper.tri(x,diag=F)])
colnames(df) <- c("Row","Col","Val")
df[,c(2,1,3)]
## Col Row Val
## 6 G A 6
## 11 H A 11
## ...
关于r - 提取具有属性的相关矩阵的一个三角形,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/18127476/