3 回答

TA貢獻(xiàn)1874條經(jīng)驗(yàn) 獲得超12個(gè)贊
這是一個(gè)已記錄的功能:
如果x具有長(zhǎng)度1,則是numeric(在is.numeric)上,并且x >= 1通過采樣從進(jìn)行1:x。請(qǐng)注意,當(dāng)x呼叫的長(zhǎng)度不同時(shí),此便利功能可能導(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ù)。何時(shí)使用seq會(huì)導(dǎo)致意外的結(jié)果?

TA貢獻(xiàn)1827條經(jīng)驗(yàn) 獲得超8個(gè)贊
您可以使用此“無錯(cuò)誤”功能重新定義:
sample = function(x, size, replace = F, prob = NULL) {
if (length(x) == 1) return(x)
base::sample(x, size = size, replace = replace, prob = prob)
}
測(cè)試一下:
> 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)注
- 622 瀏覽
添加回答
舉報(bào)