gpt4 book ai didi

删除R矩阵中每列的3个最大值

转载 作者:行者123 更新时间:2023-12-04 06:21:06 25 4
gpt4 key购买 nike

我有一个像这样的矩阵

mat <- matrix(sample(100,100,replace=TRUE),nr=10)

我现在想删除每列的 3 个最大值,这样我就可以得到一个 7 行的新矩阵。
我尝试制作每列的向量,然后删除其中的 3 个最大值

x1 = x[x!=max(x)]
x2 = x1[x1!=max(x1)]
x3 = x2[x2!=max(x2)]

然后将向量放入一个新的矩阵中,但由于我的矩阵有时有很多列,我想找到一种更简单的方法。
感谢您的帮助

最佳答案

我们可以使用 applyMARGIN=2 循环遍历列,对每列进行排序,并使用 删除三个最高值头

apply(mat, 2, FUN=function(x) head(sort(x),-3))

或者如果我们想保持顺序,使用rank来获取数字索引,通过与1:3比较得到逻辑索引,取反(!)并对列进行子集化。

apply(mat, 2, FUN=function(x) x[!rank(-x, ties.method='first') %in% 1:3])

关于删除R矩阵中每列的3个最大值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32783768/

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