R !!!R.scripts Rのちょっとしたスクリプト {{outline}} !!検索 * grepは、検索文字列が含まれる要素を返す。 * 文字列が「単語」で、要素が「文」の場合、 ** その「文」の中に「単語」が含まれているかどうかを探す。 ** 含まれている「文」を返す。 ** 注意点:「文」の中に「単語」が2回使われている場合 *** grepしたらその「文」を返すだけ。その「文」にはその「単語」が含まれている *** 「文」の中に「単語」が2回含まれていることは答えてくれない。 !myGrep *ウインドウが開いて検索対象ファイルをえらぶ(例: myGrep("had some") {{pre myGrep <- function(a){ lines.tmp <- scan(choose.files(), what="char", sep="\n") grep(a, lines.tmp, value=T) } }} !myGrep2 *ファイル名も指定する(例: myGrep2("had some", "JPN005.txt) **ただし、作業ディレクトリーが検索対象ファイルのあるディレクトリー(フォルダ)にあること {{pre myGrep2 <- function(a, b){ lines.tmp <- scan(b, what="char", sep="\n") grep(a, lines.tmp, value=T) } }} !myGrep3.R *ディレクトリー内のすべてのファイルに対し、対象とする文字列が何回出現するかの一覧表を出力 {{ref myGrep3.R}} {{pre myGrep3 <- function(a){ #copyleft 2019-01-24 sugiura@nagoya-u.jp output.file = choose.files() #結果を保存するファイル名を指定する。保存場所に注意 #(ファイル名を聞かれたら適当に名前を付ける。例えば jpn.txt) files <- list.files() for (i in files) { hit <- vector() lines.tmp <- scan(i, what="char", sep="\n") #ファイルを選択。 data.tmp <- grep("\\*(JPN|NS)...:\t", lines.tmp, value=T) #*で始まり # JPNかNS があって、 # その後ろに、3文字あって、 # その後ろに、コロンの記号とタブ記号がある行のみ。 body.tmp <- gsub("\\*(JPN|NS)...:\t", "", data.tmp) #行頭の記号とタブ記号を削除。 body.tmp <- body.tmp[body.tmp != ""] # 空の要素を削除(空でない要素のみを残す)する「イディオム」 body.lower <- tolower(body.tmp) # 小文字にして body.nopunc <- gsub("\\W", " ", body.lower) # 記号をスペースに body.single <- gsub(" +", " ", body.nopunc) # 重複スペースを一つに body.clear <- gsub(" $", "", body.single) # 文末スペースの削除 body.token <- unlist(strsplit(body.clear, " ")) # body.token <- body.token[body.token != ""] # 空の要素を削除する「イディオム」1 hit <- grep(a, body.token) cat(i, length(hit), "\n", file=output.file, append=T) } } }} !myGrep4.R !!Type(異なり語)の一覧の出力 !myAllTypes.R *NICE形式のファイルの異なり語の一覧の出力 *作業ディレクトリーをフォルダー内に *結果を保存するファイルをフォルダー外に作成 !!Token(延べ語)の一覧の出力 !{{ref myAllTokens.R}} *NICE形式のファイルの延べ語の一覧の出力 *作業ディレクトリーをフォルダー内に *結果を保存するファイルをフォルダー外に作成 !!語彙リストの作成 !テキストファイルを選んで作成 !WordFreqList.R !カレント・ディレクトリー内のすべてのテキストファイルから作成 *作業ディレクトリーを目的のディレクトリーに移動していること **getwd()で確認 *テキストファイルだけが入っていることを確認 **list.files()で確認 *標準出力(コンソール画面)に出力される **オブジェクトに保存すればそのままdata.frameとして使用可能 sample.df <- myWordList() !{{ref myWordList.R}} !!単語リストのチェック !checkWordList.R *Wordリストにあるかどうかチェック *ないものだけを出力 !!言語特徴量を算出 !myTextIndex.R *ディレクトリー内のすべてのテキストファイルの基礎的言語特徴量を算出 !myIndexNICER3 *ファイル名・スコア・言語指標を取り出す