3 回答

TA貢獻(xiàn)1810條經(jīng)驗 獲得超5個贊
這是一個已記錄的功能:
如果x具有長度1,則是numeric(在is.numeric)上,并且x >= 1通過采樣從進(jìn)行1:x。請注意,當(dāng)x呼叫的長度不同時,此便利功能可能導(dǎo)致不良行為sample(x)。
一種替代方法是編寫您自己的函數(shù)來避免該功能:
sample.vec <- function(x, ...) x[sample(length(x), ...)]
sample.vec(10)
# [1] 10
sample.vec(10, 3, replace = TRUE)
# [1] 10 10 10
seq與seq_along下列出了一些具有類似行為的函數(shù)。何時使用seq會導(dǎo)致意外的結(jié)果?

TA貢獻(xiàn)1752條經(jīng)驗 獲得超4個贊
您可以使用此“無錯誤”功能重新定義:
sample = function(x, size, replace = F, prob = NULL) {
if (length(x) == 1) return(x)
base::sample(x, size = size, replace = replace, prob = prob)
}
測試一下:
> sapply(1:7, base::sample, size = 1)
[1] 1 2 2 4 4 4 4
> sapply(1:7, sample)
[1] 1 2 3 4 5 6 7
- 3 回答
- 0 關(guān)注
- 576 瀏覽
添加回答
舉報