我想要将矩阵转换为R中的三个定义的列。这是一个示例:
输入
col1 col2 col3
row1 1 2 3
row2 2 3 4
row3 3 4 5
输出:
row1 clo1 1
row1 col2 2
row1 col3 3
row2 col2 3
row2 col3 4
row3 col3 5
最佳答案
假设X
是您的矩阵,我们可以这样做:
ind <- which(upper.tri(X, diag = TRUE), arr.ind = TRUE)
cbind(ind, X[ind])
在某些情况下,您可能需要使用暗淡的名称。在这种情况下,我们必须将结果安排在一个数据框中,因为前两列是字符,而第三列是数字。
ind <- which(upper.tri(X, diag = TRUE), arr.ind = TRUE)
nn <- dimnames(X)
data.frame(row = nn[[1]][ind[, 1]],
col = nn[[2]][ind[, 2]],
val = X[ind])
关于r - 将矩阵的上三角部分转换为3列长格式,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/41744915/