替换每列的最大值

4

我有一个矩阵,想要将每列的最大值替换为-1。在R中该怎么做呢?我尝试过:

 set.seed(14)
 mat<- matrix(sample(10,20,replace=TRUE),nr=5)
 apply(mat,2,which.max)
 [1] 3 2 1 4

我不知道如何替换矩阵。如何处理列内重复的最大值?谢谢。

1个回答

7

尝试:

 mat[which(apply(mat, 2, function(x) x == max(x,na.rm=TRUE)))] <- -1

我会使用==而不是%in%,因为它更快。 - jbaums
这个有“行”版本吗? - Tom
@Tom 这是一篇旧帖子。如果你需要相同的语法,也许可以将 apply(mat, 2 改为 apply(mat, 1。或者另一个选项是 library(matrixStats); mat[mat == rowMaxs(mat)] <- -1 - akrun

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接