2016-02-19 77 views
0

我有一个过程,我想从矢量中随机选择,偶尔可以是一个长度为1的整数。为什么没有sample.default()函数

sample(x,1)从矢量x返回一个样本时,它长于1。当x是长度为一个它调用一个sample.int(x)函数样品从低于x+1整数。如果整数是一个字符,是否有强制R采样单个整数值的方法?

使事情具体:

sample(4,1) 
>3 
sample("4",1) 
>"4" 
#I want a simpler way of getting 
as.numeric(sample(as.character(4),1))) 
>4 

此行为是在33年8月2日将R魔族指出,它暗示as.numeric(as.character())杂牌。

需要一半的帮助页面来解释此行为。除了混淆行为的悠久历史之外,这是否有其他原因?

+0

我认为你的问题是问如何使'样品(4,1) '总是返回4,但是你开始谈论角色和东西,所以我现在不知道你在问什么 – rawr

+0

@rawr如果第一个参数是一个它按照我想要的方式行事的角色。你可以调用sample int和subset,或者你可以将第一个参数设置为一个字符,然后再设置它。两者看起来都很烂。 – Seth

+0

下面的答案是正确的做法 – rawr

回答

1

推荐这种方式是写一个包装函数来处理单位长度列表

resample <- function(x, ...) x[sample.int(length(x),...)] 

看到the examples here

> resample(4,1) 
[1] 4 
相关问题