gpt4 book ai didi

R - 按重复值过滤矩阵

转载 作者:行者123 更新时间:2023-12-02 15:28:27 25 4
gpt4 key购买 nike

我有以下矩阵:

      [,1] [,2] [,3] [,4] [,5] [,6]
[1,] 1 2 1 3 5 1
[2,] 3 5 4 6 7 2

我需要过滤这个矩阵,以便我删除第 1 行中具有重复元素的列,只留下第 2 行中具有最大值的列。所以在这个例子中,输入矩阵的第 1 列和第 6 列需要是删除:

      [,1] [,2] [,3] [,4]
[1,] 2 1 3 5
[2,] 5 4 6 7

在 R 中有没有一种简单的方法可以做到这一点?

谢谢

最佳答案

您可以计算每个第一行元素的最大第二行值,然后只保留第二行是第一行元素最大值的列:

(maxes <- tapply(mat[2,], mat[1,], max))
# 1 2 3 5
# 4 5 6 7
(mat2 <- mat[,maxes[as.character(mat[1,])] == mat[2,]])
# [,1] [,2] [,3] [,4]
# [1,] 2 1 3 5
# [2,] 5 4 6 7

如果您希望第二行中的最大值有联系并希望删除重复的列,您可以在这些之后使用 mat2[!duplicated(mat2[,1]),]两个命令。

关于R - 按重复值过滤矩阵,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29158346/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com