这是一个数据框;
204 205 206 207 208 209 210 211 212 213
X1 0 1 1 0 0 1 1 1 1 0
X2 0 1 1 0 0 1 1 1 1 0
X3 0 0 1 0 0 1 1 1 1 0
X4 0 0 0 1 0 1 1 0 1 0
X5 1 0 1 0 1 1 1 1 0 1
我想对列进行排序,以便在热图中获得最佳表示,其中 1 是红色,0 是白色。所以我应该得到类似的东西:
209 210 212 212 206 211 205 207 204 213
X1 1 1 1 1 1 1 1 0 0 0
X2 1 1 1 1 1 1 1 0 0 0
X3 1 1 1 1 1 1 0 0 0 0
X4 1 1 1 1 0 0 0 1 0 0
X5 1 1 0 0 1 1 0 0 1 1
这个想法是在同一行中收集更多的 0 和 1,以获得可能的最佳热图表示。
您可以将列和行排序为:
mat <- mat[, order(colSums(mat), decreasing = T)]
mat[order(rowSums(mat), decreasing = T),]
209 210 206 211 212 205 204 207 208 213
X5 1 1 1 1 0 0 1 0 1 1
X1 1 1 1 1 1 1 0 0 0 0
X2 1 1 1 1 1 1 0 0 0 0
X3 1 1 1 1 1 0 0 0 0 0
X4 1 1 0 0 1 0 0 1 0 0
你也可以考虑一个权重向量:
weights <- c(5:1)
mat[, order(colSums(weights%*%mat), decreasing = T)]
209 210 212 206 211 205 207 204 208 213
X1 1 1 1 1 1 1 0 0 0 0
X2 1 1 1 1 1 1 0 0 0 0
X3 1 1 1 1 1 0 0 0 0 0
X4 1 1 1 0 0 0 1 0 0 0
X5 1 1 0 1 1 0 0 1 1 1
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句