在R中使用Replace的未使用参数

时间:2018-03-01 21:52:24

标签: r replace

我试图用-Inf。

替换每一行的最大值
    set.seed(1)
    mat <- matrix(sample(1:15), nrow = 5)
    #mat
    #     [,1] [,2] [,3]
    #[1,]    4    9    2
    #[2,]    6   10   13
    #[3,]    8   14   12
    #[4,]   11    5   15
    #[5,]    3    1    7


    max.col(replace(mat, cbind(1:5, max.col(mat)), -Inf))
    #Error in replace(mat, cbind(1:5, max.col(mat)), -Inf) : 
  unused arguments (cbind(1:5, max.col(mat)), -Inf)

我得到了这个错误。

可能是什么问题? 感谢

2 个答案:

答案 0 :(得分:0)

可以这样做,用-Inf:

替换每一行的最大值
apply(X = mat, MARGIN = 2, FUN = function(x) replace(x, which.max(x), -Inf))

答案 1 :(得分:0)

一些评论:

  • 显示的代码不会产生错误消息,而是返回每行包含一个元素的向量,这样第i个元素就是该行中第二大元素的列号。
  • 如果您移除外部max.col,则会使用-Inf替换每行中的最大值。

这样试试这个:

replace(mat, cbind(1:5, max.col(mat)), -Inf)

,并提供:

     [,1] [,2] [,3]
[1,]    4 -Inf    2
[2,]    6   10 -Inf
[3,]    8 -Inf   12
[4,]   11    5 -Inf
[5,]    3    1 -Inf