为什么sample()对单个数字无效?

时间:2019-06-11 18:30:20

标签: r

sample(x,n)参数是向量,以及您要采样多少次

sample(c(5,9),1) returns either 5 or 9

但是

sample(5,1) returns 1,2,3,4, or 5?

我已经阅读了帮助部分:

  

如果x的长度为1,则为数字(即is.numeric),并且x> = 1,   通过样本采样从1:x开始。注意这个方便   当x的长度变化不定时,特征可能会导致不良行为   诸如sample(x)之类的调用。请参阅示例。

但是有办法使它不这样做吗?还是只需要包含一个if语句就可以避免这种情况。

2 个答案:

答案 0 :(得分:3)

  

还是我只需要包含一个if语句来避免这种情况。

是的,很不幸。像这样:

result = if(length(x) == 1) {x} else {sample(x, ...)}

答案 1 :(得分:2)

这是另一种方法:您可以像这样简单地从向量中子集随机值-

set.seed(4)

x <- c(5,9)
x[sample(length(x), 1)]
[1] 9

x <- 5
x[sample(length(x), 1)]
[1] 5