看板 R_Language 關於我們 聯絡資訊
# 決定誰要變成0的矩陣 ind <- replicate(100, sample(c(rep(T, 6), rep(F, 4)))) # 按ind改M M <- matrix(1:1000, 10, 100) M[ind] <- 0 M # check apply(ind, 2, sum) apply(M, 2, function(x) { length(which(x == 0)) }) M ※ 引述《pp61022 (fight)》之銘言: : [問題類型]: : 程式諮詢(我想用R 做某件事情,但是我不知道要怎麼用R寫出來) : [軟體熟悉度]: : 使用者(已經有用R 做過不少作品) : [問題敘述]: : 請簡略描述你所要做的事情,或是這個程式的目的 : 我有一個矩陣 10*100 (n=10, p=100) : 我想要把這100行,每行都依比例隨機選出幾個值,改成指定值 : 例如: : 原始資料範例 : V1 V2 V3 .... V100 : 1 10 5 4 .... 42 : 2 7 15 18 .... 58 : 3 12 10 77 .... 41 : 4 9 18 65 .... 74 : 5 47 57 10 .... 81 : 6 1 46 18 .... 72 : 7 37 9 49 .... 30 : 8 17 8 75 .... 37 : 9 36 14 10 .... 6 : 10 71 36 87 .... 48 : 每行各隨機選取6個值改成我的指定值 : 轉換後資料範例 : V1 V2 V3 .... V100 : 1 10 5 0 .... 0 : 2 7 0 18 .... 0 : 3 0 10 0 .... 41 : 4 9 0 65 .... 0 : 5 0 0 0 .... 81 : 6 1 46 0 .... 0 : 7 0 0 49 .... 30 : 8 0 8 0 .... 37 : 9 0 0 10 .... 0 : 10 0 0 0 .... 0 : 我一開始是整筆資料直接*0.6 隨機填成指定值,但後來回去看資料, : 因為n太少,很容易整行都變成指定值,但我不想要整行都被改成指定值, : 才想詢問有沒有版友知道可以怎麼設定每行隨機抽樣的比例,謝謝大家。 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 111.246.78.20 ※ 文章網址: https://www.ptt.cc/bbs/R_Language/M.1526726993.A.B6D.html
celestialgod: replicate如果多一點行數,最後會變瓶頸 05/19 19:08
pp61022: 謝謝版友,我後來也有想到replicate隨機選取每行數字, 05/19 19:09
pp61022: 正在嘗試時您已經提供解法,謝謝您 05/19 19:09
pp61022: 可以請教一下為什麼replicate多一點行數,最後會變成瓶頸 05/19 19:10
pp61022: 嗎?謝謝 05/19 19:10
andrew43: 在練習階段我會傾向生成ind方便事後檢查 05/20 00:34
andrew43: 以本例資料量來看replicate不到百萬都不必太過顧率 05/20 00:38