[問題] which與if運用

看板R_Language作者 (sam)時間9年前 (2016/12/01 16:03), 編輯推噓2(205)
留言7則, 2人參與, 最新討論串1/2 (看更多)
[問題類型]: 程式諮詢(我想用R 做某件事情,但是我不知道要怎麼用R 寫出來) [軟體熟悉度]: 請把以下不需要的部份刪除 使用者(已經有用R 做過不少作品) [問題敘述]: 請簡略描述你所要做的事情,或是這個程式的目的 目前有個DATA 想要判斷在某個列是否被取代過如果沒有被取代過就換新的 舉例 DATA 欄位1 NA NA NA NA NA NA NA NA 好比說我前面有先跑程式發現我想取代1,3,5列 那我就先判斷是否為NA若是NA則改寫成A 改寫如下 A NA A NA A NA . . . 接下來我會再判斷要被替換的列為1,4,改寫成B 因為第一列被改寫則為但是第四列沒有則指會改寫第四列 A NA A B A NA . . . 想問有沒有更快速的方法因為有時候資料量大的時候會跑比較久 [程式範例]: for(j in which(ind==1)) { DT[j] <- ifelse(DT[j]==0, 要被取代的值,DT[i] ) } [環境敘述]: [關鍵字]: which , for ,ifelse 選擇性,也許未來有用 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 123.51.170.56 ※ 文章網址: https://www.ptt.cc/bbs/R_Language/M.1480579411.A.B69.html

12/01 16:16, , 1F
把一開始要取代的位置1,3,5 跟第2次要取代的位置2,4 都留
12/01 16:16, 1F

12/01 16:16, , 2F
下來。
12/01 16:16, 2F

12/01 16:17, , 3F
第二次是1,4 。
12/01 16:17, 3F

12/01 16:19, , 4F
如果存成list 你就用lappy(position_list, setdiff)
12/01 16:19, 4F

12/01 16:19, , 5F
好像也不能,再想一下
12/01 16:19, 5F

12/01 16:42, , 6F
idx <- intersect(which(is.na(DT)), new_idx)
12/01 16:42, 6F

12/01 16:43, , 7F
DT[idx] <- newdata[new_idx %in% idx]
12/01 16:43, 7F
文章代碼(AID): #1OFzbJjf (R_Language)
討論串 (同標題文章)
文章代碼(AID): #1OFzbJjf (R_Language)