gpt4 book ai didi

r - R中的哪个最大联系方法

转载 作者:行者123 更新时间:2023-12-03 20:20:59 24 4
gpt4 key购买 nike

如果有联系,which.maxwhich.min将返回最大值或最小值的最小索引。

有没有办法解决这个问题,以便在不影响函数效率的情况下返回最大的索引?

max.col具有此确切功能,但我要处理的是向量而不是矩阵。

最佳答案

您可以这样:

x<-c(1,2,1,4,3,4)
#identical to which.max, except returns all indices with max
which(x==max(x))
[1] 4 6
z<-which(x==max(x))
z[length(z)]
[1] 6
#or with tail
tail(which(x==max(x)),1)
[1] 6


编辑:

或者,您也可以将 max.col函数用于这样的向量:

max.col(t(x),"last")
[1] 6
#or
max.col(matrix(x,nrow=1),"last")
[1] 6


编辑:一些基准测试:

x<-sample(1:1000,size=10000,replace=TRUE)
library(microbenchmark)
microbenchmark(which.max(x),{z<-which(x==max(x));z[length(z)]},
tail(which(x==max(x)),1),max.col(matrix(x,nrow=1),"last"),
max.col(t(x),"last"),which.max(rev(x)),times=1000)
Unit: microseconds
expr min lq median uq max neval
which.max(x) 29.390 30.323 30.323 31.256 17550.276 1000
{ z <- which(x == max(x)) z[length(z)] } 40.586 42.452 42.919 44.318 631.178 1000
tail(which(x == max(x)), 1) 57.380 60.646 61.579 64.844 596.657 1000
max.col(matrix(x, nrow = 1), "last") 134.353 138.085 139.485 144.383 710.949 1000
max.col(t(x), "last") 116.159 119.425 121.291 125.956 729.610 1000
which.max(rev(x)) 89.569 91.435 92.368 96.566 746.404 1000


因此,所有方法似乎都比原始方法慢(这会导致错误的结果),但是 z <- which(x == max(x));z[length(z)]似乎是这些方法中最快的选择。

关于r - R中的哪个最大联系方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15630032/

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