R !!!R.sample:簡単な処理のサンプル {{outline}} !!特定の分析コードの内容の一覧を取得し、ファイルに保存する。 {{pre myGrepCode <- function(a){ lines.tmp <- scan(choose.files(), what="char", sep="\n") data.tmp <- grep(a, lines.tmp, value=T) body.tmp <- gsub(a, "", data.tmp) body.tmp <- body.tmp[body.tmp != ""] # 空の要素を削除(空でない要素のみを残す)する「イディオム」 } }} *次の分析コード欄を対象に、その内容を取り出す。 %sub:GF: **最後のコロンの後ろにタブ記号が入っている。 +上のスクリプトをRに読み込む +出力結果を適当なベクトルに保存する(例: result) {{pre > result <- myGrepCode("%sub:GF:\t") Read 125 items > result [1] "young people" "older people" "older people" [4] "youth" "young people" "a young person" [7] "a young person" "a younger person" "older people" [10] "young people" "young people" "the young couples" [13] "they" "this" "young people\t\t" [16] "they" "old people" "older people" [19] "older people" "this" "young people" [22] "young people" "older couples" "older couples" [25] "both younger and older people" "having a longer life" "older people" [28] "they" "they" "this" [31] "the key to enjoying life" "people" "older people" }} *結果の入ったベクトルresultをファイル(例: result.txt)に書き出す。 > write(result, "result.txt") !!特定の分析コードの内容の一覧を取得し、ファイルに保存する。(フォルダー内のすべてのファイルを対象に) {{pre myGrepCodeFolder <- function(a){ tmp <- vector() # ベクトルの変数(とりあえず名前はtmp)を作っておく files <- list.files() # 今いる作業ディレクトリー内のファイル一覧の取得 for (i in files) { # すべてのファイルを一つずつ処理していく lines.tmp <- scan(i, what="char", sep="\n") data.tmp <- grep(a, lines.tmp, value=T) body.tmp <- gsub(a, "", data.tmp) body.tmp <- body.tmp[body.tmp != ""] tmp <- c(tmp, body.tmp) #処理するたびにtmpに追加 } return(tmp) # 全部のファイルの処理が終わ手から結果を返す } }} !作業前の前提 +処理対象のファイルを一つのフォルダーにまとめる +作業ディレクトリーをそのフォルダーに設定する !作業手順 +プログラムを実行し、結果をたとえば result という変数に保存して +それをファイルに書き出す。(そのまま書き出すと作業ディレクトリーのフォルダー内に保存される) result <- myGrepCodeFolder("\\*JPN...:\\t") write(result, "result.txt") !検索例 *データ本文 "\\*JPN...:\\t" *母語話者による書き換え文 "%NTV:\\t" *母語話者によるコメント "%COM:\\t" *分析コード "%COD:\\t" !!特定の分析コードの内容の一覧を取得し、ファイルに保存する。(フォルダー内のすべてのファイルを対象に)★行頭記号をそのままにする場合 {{pre myGrepCodeFolder2 <- function(a){ tmp <- vector() # ベクトルの変数(とりあえず名前はtmp)を作っておく files <- list.files() # 今いる作業ディレクトリー内のファイル一覧の取得 for (i in files) { # すべてのファイルを一つずつ処理していく lines.tmp <- scan(i, what="char", sep="\n") data.tmp <- grep(a, lines.tmp, value=T) #body.tmp <- gsub(a, "", data.tmp) #行頭記号を削除しない data.tmp <- data.tmp[data.tmp != ""] tmp <- c(tmp, data.tmp) #処理するたびにtmpに追加 } return(tmp) # 全部のファイルの処理が終わ手から結果を返す } }} !データ本文と添削文の両方を抽出 *正規表現 <<( | )>>を使う。(丸カッコの中、縦棒の前後のいずれかという意味) *行頭記号が残っていれば、どのファイルのものかがわかる myGrepCodeFolder2("(\\*JPN...:\\t|%NTV:\\t)") *結果を保存する場合、一つ上のディレクトリー(..)に保存すれば、データと結果が混ざらない {{pre JandN <- myGrepCodeFolder2("(\\*JPN...:\\t|%NTV:\\t)") write(JandN, "../JandN.txt") }}