看板 R_Language 關於我們 聯絡資訊
[軟體熟悉度]: 使用者(已經有用R 做過不少作品) [問題敘述]: 請簡略描述你所要做的事情,或是這個程式的目的 有一個data.table如以下格式, x b V3 V4 1 1 2 1 1 2 2 3 3 3 4 4 4 5 4 4 5 5 6 5 5 6 1 2 1 1 我想要變成以下格式, x b V3 V4 1 1 2 1 1 2 2 3 3 3 4 4 4 5 4 4 5 5 6 5 5 6 1 2 1 1 目前我可以用一個迴圈把它完成,如以下, 但是我想問有沒有使用data.table語言的方法? 因為實際資料有達到十萬多條row。 len <- ncol(dd) dd <- as.data.frame(dd) for (x in 1:nrow(dd)) { idx <- sum(dd[x,]!="") if(idx != len) { dd[x,((len-idx+1):len)] <- dd[x,1:idx] dd[x,1:(len-idx)] <- "" } } 關於data.table的方式,我有想到一個方法如下, 可是執行一直報錯,所以不知道問題在哪? len=ncol(dd) fun <- function(x) { idx <- len-length(which(x!='')) if (idx !=0) { res <- cbind(array(rep('',idx),c(1,idx)),as.vector(x[which(x!='')])) } else { res <- as.vector(x[which(x!='')]) } res } dd[,names(dd)[1:4]:=apply(.SD, 1, fun)] 先謝謝大家了! -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 122.84.64.149 ※ 文章網址: https://www.ptt.cc/bbs/R_Language/M.1436715260.A.EFF.html
celestialgod: .SD是每一行,他只能用lapply一次丟一行 07/13 00:01
gn01349943: 謝謝提示! 07/13 01:22