R获取矩阵中每行的最小值,并返回行和列名称

ctr*_*brk 7 r matrix minimum correlation

我有一个像这样的矩阵:

在此输入图像描述

实际上只有数百或数千个值.

我需要做的是返回每行的最小值,以及行/列名称.

因此,对于示例中的第1行"BAC",BAC/CSCO的最小值为0.92,因此我需要返回如下内容:

BAC/CSCO 0.92

然后对矩阵中的每一行重复此操作.

非常感谢协助.我认为应用是诀窍,但我无法得到正确的组合.

fot*_*ton 15

X <- matrix(runif(20), nrow=4)
rownames(X) <- paste0("foo", seq(nrow(X)))
colnames(X) <- paste0("bar", seq(ncol(X)))

result <- t(sapply(seq(nrow(X)), function(i) {
  j <- which.min(X[i,])
  c(paste(rownames(X)[i], colnames(X)[j], sep='/'), X[i,j])
}))

print(X)
print(result)
Run Code Online (Sandbox Code Playgroud)

会给你:

          bar1      bar2       bar3       bar4      bar5
foo1 0.2085419 0.6290522 0.12730378 0.17775105 0.3239684
foo2 0.8061464 0.7948392 0.09330563 0.06698921 0.5557932
foo3 0.1790950 0.7788139 0.35787944 0.39117325 0.2578457
foo4 0.9099254 0.4048508 0.54791272 0.38674301 0.3272156
Run Code Online (Sandbox Code Playgroud)

     [,1]        [,2]                
[1,] "foo1/bar3" "0.127303782384843" 
[2,] "foo2/bar4" "0.0669892099685967"
[3,] "foo3/bar1" "0.179094966035336" 
[4,] "foo4/bar5" "0.327215566998348" 
Run Code Online (Sandbox Code Playgroud)