找到最大值5,小于1,最低5个值

LGT*_*der 4 r

我在R中有一个大的相关矩阵结果 - 现在大约有30个项目彼此相关 - 所以这个数组有大约10,000个单元格.我想找到最大的5个和最小的5个结果.我怎样才能做到这一点?

这是一个非常小的部分 - 左上角 - 看起来像:

               PL1         V3          V4         V5
PL1     1.00000000 0.19905701 -0.02994034 -0.1533846
V3      0.19905701 1.00000000  0.09036472  0.1306054
V4     -0.02994034 0.09036472  1.00000000  0.1848030
V5     -0.15338465 0.13060539  0.18480296  1.0000000
Run Code Online (Sandbox Code Playgroud)

表中的值总是在1和-1之间,如果有帮助,作为相关矩阵,对角线上方的上半部分是对角线下方的下半部分的副本.

我需要最小的5小于1和最负5包括-1,如果它存在.

提前致谢.

Sac*_*amp 5

这是另一种粗略的方式来做到这一点(毫无疑问有一种更容易的方法),但是将它包装在一个函数中并不是很难:

编辑:缩短代码.

 # Simulate correlation matrix (taken from Patrick's answer)
set.seed(1)
n<-100
x<-matrix(runif(n^2),n,n)
cor<-cor(x)

# Set diagonal and one triangle to to 0:
diag(cor) <- 0
cor[upper.tri(cor)] <- 0

# Get sorted values:
sort <- sort(cor)

# Create a dummy matrix and get lowest 5:
min <- matrix(cor %in% sort[1:5] ,n,n)
which(min,arr.ind=T)

# Same for highest 5:
max <- matrix(cor %in% sort[(n^2-5):(n^2)] ,n,n)
which(max,arr.ind=T)
Run Code Online (Sandbox Code Playgroud)

正如ulidtko所说,另一种选择是制作图表.您可以尝试我的包,称为qgraph,可用于将相关矩阵可视化为网络:

library(qgraph)
qgraph(cor(x),vsize=2,minimum=0.2,filetype="png")
Run Code Online (Sandbox Code Playgroud)

qgraph以PNG格式输出