- Mar 19 Mon 2018 13:16
破解甲骨文!一字獎金高達45萬網友笑:騙我去學歷史?
- Mar 19 Mon 2018 04:52
[程式] R的字串處理
依努皮亞克文翻譯[軟體程式種別]: R [程式問題]: 資料處置懲罰 [軟體熟悉度]: 中(3個月到1年) [問題論述]: 比來常在處置字串 發現本身會的 function 很不敷用 想多學點 function 華頓翻譯公司列出一些我經常使用的 但願能拋磚引玉 請列位高手能教我一些高著兒 [程式類型]: 媒介 : R 的字串處置 翻譯社 要謹慎注重 character 翻譯社 factor , numeric 這三種物件的誤轉換和混用 factor 是一種很厭煩的物件 , 因為它在轉成數字和字串的時刻 , 經常會釀成跟本來不一樣的器材 , 建議資料處置的進程 , 預設用 matrix 和 character 兩種而避免利用 data.frame ------------------------------------------------------------------ 1.字串黏合 paste ("A","B"翻譯社sep="") ---->>> "AB" 2.字串切割 strsplit("A.B",split=".",fixed=T) ---->>> "A" "B" 3.切確穩合 x <- c("AB"翻譯社"AA") x %in% "AB" ---->>> TRUE FALSE 4.部分吻合 + (回傳 which) x <- c("AB","AA") grep("B",x) ---->>> 1 grep("A",x) ---->>> 1 2 grep("B",x,value=T) ---->>> "AB" grep("B",x翻譯社value=T,invert=T) ---->>> "AA" grep("C",x) ---->>> integer(0) #若目標是要找 index 翻譯社 建議改用 grepl 4-2.部分吻合 + (回傳判定式) x <- c("AB","AA") grepl("B"翻譯社x) ---->>> TRUE FALSE 4-3.部分吻合 + (回傳位置) + (回傳??) x <- c("BBB","AAA","CCB") regexpr("B",x) ---->>> 1 -1 3 (第一次 "hit" 的位置) 1 -1 1 (有沒有 "hit") 5.子字串 substr("human123456"翻譯社start=1,stop=5) ---->>> "human" !!注重!! 4-3 的 regexpr 與這個 substr 結合起來 , 在寫 網頁Parser 的時刻很好用 regexpr 能界說出 statr=若幹 所謂的網頁Parser 就是翻譯公司去下載某些 html 檔案 檢視原始碼 然後找出你需要的資料 再找出一些能 cut 的劃定規矩 用 strsplit 搭配 TR , TD 之類的字串去切出你要的資料 6.特定字元庖代 (1st hit) x <- "AABB" sub("A",replacement="C",x) ---->>> "CABB" 6-2.悉數特定字元庖代 (global hit) x <- "AABB" gsub("A"翻譯社replacement="C",x) ---->>> "CCBB" 7.計較字串長度 ### 盡可能別用這個 fuction x <- c("A"翻譯社"AAA","AAAAA") nchar(x) ---->>> 1 3 5 nchar(as.factor(x)) ---->>> 1 1 1 8.多重字元(串)貼合 (矩陣內) x <- matrix(letters[1:6],2,3) apply(x翻譯社1,paste,collapse="") ---->>> "ace"翻譯社"bdf" apply(x翻譯社2,paste,collapse="") ---->>> "abc","def" 9. 字元反轉 x <- c("A B"翻譯社"*.") sapply(lapply(strsplit(as.character(x), NULL), rev)翻譯社 paste, collapse="") [1] "B A" ".*" 10.字元查抄 x <- c("A B","*.") unique(unlist(strsplit(as.character(x)翻譯社split=""翻譯社fixed=T))) [1] "A" " " "B" "*" "." ----------------------------------------------------------- Regular expression : 字串模糊比對 , 或特定字母佈列模式的抓取 在R內 根基上分成3種 Basic regular expression (BRE) --> extended = FALSE Extended regularexpression (ERE) --> extended = TRUE (預設) perl-like (perl) --> perl = TRUE 雙冒號代表我測試過且成功 單冒號代表網路上抓下來或是測試失敗 -------------------------------------------------------------- 通用部分 {,} * :: {0, } 最少泛起0次, 最多無窮多次 + :: {1翻譯社 } 1 無窮屢次 ? :: {0,1} 0 1 [Aa] :: A 或 a [^1-9] :: not 1:9 [1-9] :: 1:9 [a-z] :: a b c ... z [A-Z] :: A B C ... Z [a-zA-Z] :: 所有英文字母 [W-z] :: WXYZabc....z [w-Z] :: 不成利用! (AB) :: 括號一次搜集多個字元 ### 一種延長字串的寫法 舉例 : x <- c("company"翻譯社"companies",) 可以用以下兩種寫法 1. grep("[company|companies]"翻譯社x) 2. grep("compan(y|ies)",x) 第二種在大資料的時刻會對照快 $ :: 字尾限制 ^ :: 字首限制 | :: "ABC|EFG" --> grep("ABC"or"DEF"翻譯社x) . :: 隨便字元 ----------------------------------------------------- ERE , extended = TRUE digit (數字) \\d :: [0-9] \\D :: [^0-9] [[:digit:]] :: 同上 [^[:digit:]] :: 同上 blank (空白) \\s :: 能切開 " " 或 "\t" \\S :: 切開非空白及 tab 的字元 [[:blank:]] :: 同上 [^[:blank:]] :: 同上 AlphaBet + Digit (正常字元) \\w :: [0-9a-zA-Z] \\W :: [^0-9a-zA-Z] [[:alnum:]] :: 同上 [^[:alnum:]] :: 同上 AlphaBet (英文字元) [[:alpha:]] :: 同上 [^[:alpha:]] :: 同上 特別符號 [[:punct:]] :: ! " # $ % & ' ( ) * + , - . / : ; < = > ? @ [ \ ] ^ _ ` { | } ~ [^[:punct:]] :: 英文字 , 數字 (留意! 翻譯社 \t 和 都邑被切掉) 注重 ! 正斜線這個符號很容易與其他 regular expr 攪渾 必需細心檢查 "\" 存在的字串 可印符號 [[:print]] :: 所有字元 (數字,字母,非凡符號翻譯社空白) , \t , \001 除外 16進位字元 [[:xdigit:]] :: 16進位有關英文或數字 [0-9a-fA-F] 巨細寫英文字元 [[:upper:]] :: 大寫英文字元 [A-Z] [^[:upper:]] :: 非大寫 [^A-Z] [[:lower:]] :: 小寫 [a-z] [^[:lower:]] :: ^[a-z] 留意 "\t" 照樣會被留下來 空白和換行等 [[:space:]] :: " " , \t 翻譯社 , \f 翻譯社 \r (\f : 換行但不回到行頭) (\r : 回到行頭並消弭此行內所有的文字) P.S. 這兩種不經常使用,當豆常識便可 [[:graph:]] :: [A-Za-z0-9]再加[["punct"]] ---------------------------------------------------------- perl = TRUE \\w : [A-Za-z0-9_] \\W : [^A-Za-z0-9_] \\s : [\t \r\f] \\S : [^\t \r\f] \\d : [0-9] \\D : [^0-9] ---------------------------------------------------------- regular expression 工事中 (未完) 感受這篇被華頓翻譯公司當筆記來用了 reference: 1. http://www.rtfiber.com.tw/~changyj/ 2. http://www.stat.psu.edu/~dhunter/R/html/base/html/regex.html ---------------------------------------------------------- 大小寫切換 TRUTH <- c("Abc","ABC") a <- gsub("(\\w)","\\L\\1",TRUTH翻譯社perl=TRUE) ---> "abc","abc" b <- gsub("^(\\w)","\\U\\1"翻譯社a,perl=TRUE) ---> "Abc"翻譯社"Abc" 同上 , 特別很是神秘的 Bug !? T123 <- c("Tgfbr1"翻譯社"Cd320","Ndrg3"翻譯社"Aldoa","Bckdk","Tmed3","Hfe2") > gsub( "(\\w)", "\\L\\1" 翻譯社 T123 , perl=T) [1] "LTLgLfLbLrL1" "LCLdL3L2L0" "LNLdLrLgL3" [4] "LALlLdLoLa" "LBLcLkLdLk" "LTLmLeLdL3" [7] "LHLfLeL2" > gsub( "(\\w)"翻譯社 "\\L\\1" , T123 翻譯社 perl=TRUE) [1] "tgfbr1" "cd320" "ndrg3" "aldoa" "bckdk" "tmed3" [7] "hfe2" --------------------------------------- 消弭多餘空白 > x <- "Hey! Apple " > gsub(" {2,}"翻譯社"",x) [1] "Hey! Apple" ### 容忍一個空白 , 但兩個以上至無窮大則消弭 --------------------------------------- 在處置夾雜字串與數字的資料矩陣的時辰 常常需要在 data.frame 和 matrix 之間切換 有時候會字串會被一些預設的空白字元夾住 ex: "1" , "15" , "333" 經由轉換以後 " 1" , " 15" 翻譯社 "333" (fit 最長字串的長度) > DATA <- gsub("^ *| *$",as.matrix(DATA)) --------------------------------------- ### 一些參考的 pattern 1. "^\\d+$" ### 純數字的欄位 ### 2. "^ *| *$" ### 字首字尾的空白(搭配 gsub) ### 3. "^[0][\\.]{0,1}[0]*$" ### "0" "0.0" "0.00" "0.000" "0.0000" 翻譯社 bug 是 "0." "00" #################################################################### 放一些 linux 下的好用指令 光用 R 來做字串處置不夠用 緣由在於若處置懲罰的檔案太大 光是讀進 R 就累死人 這邊首要是運用在檔案減肥 文字檔案 rs123\t0|1:0000\tAAAA rs456\t1|0:0000\tBBBB ################### 橫向 grep [-w : word] [-f : 給 pattern file] [-F : 切確比對] ### 若要搜尋固定字串 , -F必下 (快超多) 1. cat 文字檔案|grep -w 'rs' ### 沒東西 2. cat 文字檔案|grep -w -F 'rs123' ### 出第一行 3. car 文字檔案|grep -w '^rs.*$' ### 二行皆出 ################### 縱向 cut [-d : 用tab切開會是3個column的矩陣] 1. cut -d'\t' -f1,2 原檔 > 新檔 ### 留下 1 and 2 columns ################### 橫向 sed 1. sed -n '6,$p' 原檔 > 新檔 ### 從第六行入手下手 翻譯社 print 至尾行 ### 或可理解成翻譯社 把 1~5行切掉 2. sed 's/:\S*/HAHA/g' 原檔 > 新檔 ### s=取代 , g=global ### 把紅色的正規 pattern 代替成綠色 ################### 當檔案有 10000000 rows , 讀不進 R 怎辦? 就算讀進 R , 資料太大一直 SWAP 電腦動不了怎麼辦? 經過一番苦戰 我建議以下的思慮體例 0. 先透過上述體式格局 直接在終端機把檔案減肥 1. 檔案列數 <- system("wc -l 檔案",intern=TRUE) LOOP <- ceiling(檔案列數 / 5000) for(g in 1:LOOP) ### 用while可省前兩行 { tmp <- read.table(檔案,skip=5000*(g-1),nrow=5000) ### 但我只熟 for expr(中間的各類處置) write.table(tmp,g) Sys.sleep(5) ### 給一點時候讓電腦回氣 } 2. system("cat 小檔案1 小檔案2 小檔案3 .... > 總檔案") ### 檔案 rbind() 雖然不是最快的方式 但 Over night 是一定可以把檔案處置完的 以上
- Mar 18 Sun 2018 20:29
[請益] 電腦版的LINE若何斷行(分行)?
- Mar 18 Sun 2018 12:06
「蔗姑救我」!網友拍鬼新娘娶親以為撞鬼!究竟竟是⋯⋯
- Mar 18 Sun 2018 03:41
[問題] 刪除文字檔案中的換行符號
- Mar 17 Sat 2018 19:07
把照片轉成文字檔!AdobeScan應用影象辨認精準轉換印刷文字…
- Mar 17 Sat 2018 10:33
Windows 8筆記型電腦設定為無線基地台 @ 軟體利用教學
- Mar 17 Sat 2018 02:11
玩 ( 日文 / 簡體 )遊戲泛起亂碼的解決方式@搜集室
- Mar 16 Fri 2018 17:32
[諜報] 3/7陸體驗服保護內容
莫霍克文翻譯http://bbs.ngacn.cc/read.php?tid=13595162 明天的維修公告 是陸服 是陸服 是陸服 ---------------------------------------- 1.《陰陽師》全新聯動大料想! 多位全新聯動腳色即將登陸安然京!寮辦張貼聯動料想賞格令,誠邀各位大人一同探查此 次降臨平安京的神秘來客身份! 舉止時候:3月8日0:00-3月11日23:59 活動規則: ●舉止時代,大人們通過庭院小紙人上方文字圖標,便可介入IP聯動猜想活動翻譯寮辦逐日 將隨機為列位大人準備一條與本次聯動角色相幹的提醒線索,大人們可以通過線索推理 本次聯動角色翻譯 ●每位大人逐日可進行屢次猜想,每日進行初次料想後,大人們可以獲得20勾玉獎勵。寮 辦還將根據大人們逐日的前三次猜想記錄進行鑒定,在逐日前三次猜想中,推理出正確 聯動腳色的大人們將會在揭曉時代逐日獲得神秘的符咒嘉獎一張,總共三張。 ●聯動料想需要大人們正確輸入本次聯動角色或聯動作品名稱,回覆准確的聯動角色名或 作品名稱均算成功料中(謎底填寫示範如下:[正確示範]:奴良陸生[毛病示範] :華頓翻譯公司猜 是奴良陸生)。本次料想只檢測文字,猜想中輸入表情、圖片或語音轉化文字均視為無 效謎底。 ●為確保料想體驗,當各位大人處於猜想頻道時,不會領受到賽馬燈的提醒哦。 ●猜想活動竣事後,全新聯動行將揭曉,請大人們配合等候吧! 2.首領御魂重磅降臨! 自從魔鬼首領降臨安然京後,京都城內怪事頻發、惡鬼叢生,還好有陰陽師大人們進行集 結、退治魔鬼首領翻譯在陰陽師大人們的盡力下,妖怪首級的勢力垂垂衰退。感激陰陽師大 人們每日守護安然京! ●維護後,陰陽師大人們可經由過程擊敗逢魔之時四大集結首領獲得對應的首級御魂(對集結 首級的擊敗獎勵進行了調劑),也可在秘魂屋進行選購,後續版本也將開放更多獲取途 徑翻譯 ●首級御魂為2件套套裝,提供根本屬性(攻擊、生命、防禦)的周全加成,2件套結果為唯 一被動且僅在與怪物對戰中生效翻譯 ●首級御魂可與通俗御魂4件套進行搭配,多套分歧首級御魂之間也能進行互相搭配,大 大豐富了與怪物對戰中的御魂結果組合。 設計師觀點:跟著新的“4+2”模式、“2+2+2”模式的出現,大人們在PVE弄法中將會有 更多的御魂組合選擇以及策略發揮翻譯在未來的版本裡,最後一個集結首級即 將來襲,現有的部份PVE玩法將進行進級、迭代和優化,同時更多新穎有趣 的弄法、極具挑戰性的副本將陸續來襲,等您來戰! 溫馨提示:體驗服所更新的測試內容不完全同等於正式服的外放內容,首級御魂的屬性、 效果和投放有可能會在體驗服進行調劑,根據測試及調劑效果投放,敬請寄望。 3.全新劇情番外'青燈怪談'開啟! 在黑夜中若隱若現的燈火,空氣中傳來一絲寒意……百物語之主終於現身。 晴明等人受到狸貓的委託,卻碰到了妖怪青行燈。 身為百物語之主的青行燈,此次會講述怎樣的動聽故事呢……? 一切即將在番外'青燈怪談'中揭曉翻譯 具有鳳凰火及狸貓的陰陽師大人便可解鎖番外'青燈怪談'劇情,可在探索中的安然百物語 處查看。 5.皮膚商店上新 ●全新金魚姬皮膚'櫻之上將'上架皮膚商店! 上架時候:2018年3月7日維護後 售價:160皮膚券 畫師:八雲玖 https://imgur.com/UM0gdzs
- Mar 16 Fri 2018 08:43
爆紅「甲骨文表情包」 設計者:付與漢字時期新氣息