2016-02-19 78 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 
相關問題