r - 选择具有最高值的行并返回行名
问题描述
对于每一列,我想选择在所有行中具有最高值的行名。请参阅我的输入和输出示例。
> df.t[,1:5][1:5,]
MMRF_1021 MMRF_1024 MMRF_1029 MMRF_1030 MMRF_1031
ENSG00000004468 8.195680 7.500753 7.912472 8.886945 6.780892
ENSG00000081237 4.401101 6.135663 6.525512 4.496787 7.927844
ENSG00000139193 6.124573 6.585169 5.547023 6.254043 2.764494
ENSG00000156738 -1.491527 2.237000 7.192401 8.032151 -4.253239
ENSG00000174059 -5.663732 -4.477220 -5.663732 -4.237282 -4.792564
出去
MMRF_1021 ENSG00000004468
MMRF_1024 ENSG00000004468
MMRF_1029 ENSG00000004468
MMRF_1030 ENSG00000004468
MMRF_1031 ENSG00000081237
解决方案
我们可以转换数据框并使用max.col
data.frame(col = names(df), value = rownames(df)[max.col(t(df))])
# col value
#1 MMRF_1021 ENSG00000004468
#2 MMRF_1024 ENSG00000004468
#3 MMRF_1029 ENSG00000004468
#4 MMRF_1030 ENSG00000004468
#5 MMRF_1031 ENSG00000081237
数据
df <- structure(list(MMRF_1021 = c(8.19568, 4.401101, 6.124573, -1.491527,
-5.663732), MMRF_1024 = c(7.500753, 6.135663, 6.585169, 2.237,
-4.47722), MMRF_1029 = c(7.912472, 6.525512, 5.547023, 7.192401,
-5.663732), MMRF_1030 = c(8.886945, 4.496787, 6.254043, 8.032151,
-4.237282), MMRF_1031 = c(6.780892, 7.927844, 2.764494, -4.253239,
-4.792564)), class = "data.frame", row.names = c("ENSG00000004468",
"ENSG00000081237", "ENSG00000139193", "ENSG00000156738", "ENSG00000174059"))
推荐阅读
- bash - ssh登录后期望脚本不执行
- python - 我无法为 python 3.7 安装 Scikit-learn
- c# - 是否有在 Apache Ignite 中使用具有缓存过期策略的瘦客户端的解决方法?
- c# - 如何显示使用 ng-repeat 显示模型值
- chef-infra - Chef 12 已弃用退出值的警告
- asp.net - ASP.NET Web API 2 - ReadAsMultipartAsync 替代/如何
- go - Confluent go kafka 库从重启时最早的偏移量开始
- javascript - .NET Core 等效于 Uint8ClampedArray
- php - 查询在 PHP 中返回空结果,但在 phpmyadmin 上工作正常
- git - 我可以使用 Github 的 LFS 测试服务器吗?