亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

來自不同長度向量的樣本(包括1個)

來自不同長度向量的樣本(包括1個)

長風秋雁 2020-01-05 08:00:22
我有一個長度可變的向量,有時長度可能為1。我想從此向量采樣,以便如果其長度為1,則始終采樣該1個數字。sample() 將不會執行此操作,因為當樣本大小為1時,它將從1采樣到數字。
查看完整描述

3 回答

?
慕容708150

TA貢獻1831條經驗 獲得超4個贊

這是一個已記錄的功能:


如果x具有長度1,則是numeric(在is.numeric)上,并且x >= 1通過采樣從進行1:x。請注意,當x呼叫的長度不同時,此便利功能可能導致不良行為sample(x)。


一種替代方法是編寫您自己的函數來避免該功能:


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下列出了一些具有類似行為的函數。何時使用seq會導致意外的結果?



查看完整回答
反對 回復 2020-01-06
?
Smart貓小萌

TA貢獻1911條經驗 獲得超7個贊

您可以使用此“無錯誤”功能重新定義:


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



查看完整回答
反對 回復 2020-01-06
  • 3 回答
  • 0 關注
  • 613 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號