首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >随机抽样which.min()

随机抽样which.min()
EN

Stack Overflow用户
提问于 2013-10-08 11:03:26
回答 2查看 331关注 0票数 1

我有一个变量向量:

代码语言:javascript
复制
x<-runif(1000,0,1)

我想选择值最低的元素:

x[which.min(x)]

默认情况下,which.min(x)将返回满足此条件的第一个元素,但是,可能会出现多个相同低的元素。

是否有一种方法可以从这些值中取样,然后只返回一个值?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-10-08 11:08:12

使用which查找所有元素的索引,这些元素等于向量的最小值,并随机抽取一个元素(除非最小值出现一次--那么我们就可以返回它)。

代码语言:javascript
复制
# Find indices of minima of vector
ids <- which( x == min(x) )

#  If the minimum value appear multiple times pick one index at random otherwise just return its position in the vector
if( length( ids ) > 1 )
  ids <- sample( ids , 1 )

#  You can use 'ids' to subset as per usual
x[ids]
票数 3
EN

Stack Overflow用户

发布于 2013-10-08 11:38:20

另一种类似的方法(但不使用if )是对匹配的值进行sample处理。

以下是两个例子。x1有多个min值。x2只有一个。

代码语言:javascript
复制
## Make some sample data
set.seed(1)
x1 <- x2 <- sample(100, 1000, replace = TRUE)
x2[x2 == 1][-1] <- 2 ## Make x2 have just one min value

## Identify the minimum values, and extract just one of them.
y <- which(x1 == min(x1))
y[sample(seq_along(y), 1)]
# [1] 721

z <- which(x2 == min(x2))
z[sample(seq_along(z), 1)]
# [1] 463
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19246012

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档