Re: [問題] 要如何將$之後字串用迴圈寫

看板R_Language作者 (天)時間8年前 (2017/04/14 22:50), 8年前編輯推噓1(100)
留言1則, 1人參與, 最新討論串2/2 (看更多)
※ 引述《jklkj (誠實可靠小郎君)》之銘言: : [問題類型]: : : 程式諮詢(我想用R 做某件事情,但是我不知道要怎麼用R 寫出來) : : [軟體熟悉度]: : 請把以下不需要的部份刪除 : 入門(寫過其他程式,只是對語法不熟悉) : [問題敘述]: : : 我目前用RPostgreSQL把資料庫的資料抓下來,但是只要是中文的欄位都變成亂碼 : 我想用比較簡單的方法把UTF8轉成big5 : : [程式範例]: : : df$addr <- iconv(df$addr, "UTF8", "big5") : 如上述,我目前是用iconv一個一個轉,想請問一下我要怎麼把迴圈寫進$之後 : 或是可以告訴我關鍵字或概念 : 或是有沒有更簡便的方法 : 提醒:下面程式沒有判斷factor,如有factor請自行加入判斷式 # data.table做法: library(data.table) DT[ , lapply(.SD, function(x)iconv(x,"UTF8", "BIG5"))] # 如果有numeric或是integer column的話: DT[ , lapply(.SD, function(x){ if (is.character(x)) iconv(x,"UTF8", "BIG5") } else return(x)})] # dplyr做法: library(dplyr) DF %>% mutate_each(funs(iconv(., "UTF8", "BIG5"))) # 如果有numeric或是integer column的話: DF %>% mutate_if(is.character, funs(iconv(., "UTF8", "BIG5"))) # base函數解法: evalExpr <- lapply(names(DF), function(x){ bquote(iconv(.(as.symbol(x)), "UTF8", "BIG5")) }) do.call(function(...) transform(DF, ...), evalExpr) # 如果有numeric或是integer column的話: evalExpr <- lapply(names(DF)[sapply(DF, is.character)], function(x) bquote(iconv(.(as.symbol(x)), "UTF8", "BIG5"))) do.call(function(...) transform(DF, ...), evalExpr) base函數解法應該是最難的XDD base當然還可以用其他大大提到的方式直接做: lapply(names(DF), function(x){ iconv(DF[[x]], "UTF8", "BIG5") }) 或是 lapply(names(DF)[sapply(DF, is.character)], function(x){ iconv(DF[[x]], "UTF8", "BIG5") }) 只是除了要多轉一次data.frame之外,第二個還要把numeric, integer column併回去 -- R資料整理套件系列文: magrittr #1LhSWhpH (R_Language) https://goo.gl/72l1m9 data.table #1LhW7Tvj (R_Language) https://goo.gl/PZa6Ue dplyr(上.下) #1LhpJCfB,#1Lhw8b-s (R_Language) https://goo.gl/I5xX9b tidyr #1Liqls1R (R_Language) https://goo.gl/i7yzAz pipeR #1NXESRm5 (R_Language) https://goo.gl/zRUISx -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 111.246.26.70 ※ 文章網址: https://www.ptt.cc/bbs/R_Language/M.1492181442.A.5B4.html ※ 編輯: celestialgod (111.246.26.70), 04/14/2017 22:59:42 ※ 編輯: celestialgod (111.246.26.70), 04/14/2017 23:10:26

04/18 17:52, , 1F
最近再來試試,感謝
04/18 17:52, 1F
文章代碼(AID): #1OyE72Mq (R_Language)
討論串 (同標題文章)
文章代碼(AID): #1OyE72Mq (R_Language)