gpt4 book ai didi

r - which.min 按行不适用

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

我确信会存在这样的东西(沿着 rowSums 等),但我找不到任何东西。基本上,这样做:

apply(mx, 1, which.min)

不使用 apply这样我们就可以避免调用 which.min 的开销 nrow(mx)次,这可能是一个很大的数字。

最佳答案

感谢@user20650 的回答:

set.seed(1)
mx <- matrix(runif(1e7), ncol=5)

apply :
system.time(which.min.mx <- apply(mx, 1, which.min))
# user system elapsed
# 4.7 0.0 4.7

max.col :
system.time(mx.mins.2 <- max.col(-mx, ties="first"))
# user system elapsed
# 0.12 0.00 0.13
all.equal(which.min.mx, mx.mins.2)
# [1] TRUE

旧答案:这是我想出的最好的。希望有人有更好的东西,比如内置 row.which.min或一些这样的。数据:

使用 pmin , == , %% ,以及一些向量回收:
system.time({
row.min <- do.call(pmin, as.data.frame(mx))
mx.mins <- which(t(mx == row.min)) %% ncol(mx)
mx.mins[!mx.mins] <- ncol(mx)
})
# user system elapsed
# 0.51 0.00 0.51
all.equal(which.min.mx, mx.mins)
# [1] TRUE

更不用说如果连续有一个以上的最小值,这种类型就会一败涂地。

关于r - which.min 按行不适用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27848165/

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