#getwd()
list.files()
setwd("NICER1_3/NICER_NS")
list.files()
setwd("NICER1_3/NICER_NS")
tmp1 <- scan("NS501.txt", what="char", sep="\n")
tmp2 <- grep("^\\*NS501:\t", tmp1, value=T)
tmp3 <- gsub("^\\*NS501:\t", "", tmp2)
tmp4 <- gsub("[[:punct:]]", " ", tmp3)
tmp5 <- gsub(" +", " ", tmp4)
tmp6 <- tolower(tmp5)
tmp7 <- strsplit(tmp6, " ")
tmp8 <- unlist(tmp7)
token <- sort(tmp8)
type <- unique(token)
length(token)
## [1] 742
length(type)
## [1] 359
setwd("NICER1_3/NICER_NS")
tmp1 <- scan(choose.files(), what="char", sep="\n")
tmp2 <- grep("^\\*\\w+:\t", tmp1, value=T)
tmp3 <- gsub("^\\*\\w+:\t", "", tmp2)
tmp4 <- gsub("[[:punct:]]", " ", tmp3)
tmp5 <- gsub(" +", " ", tmp4)
tmp6 <- tolower(tmp5)
tmp7 <- strsplit(tmp6, " ")
tmp8 <- unlist(tmp7)
token <- sort(tmp8)
type <- unique(token)
length(token)
## [1] 742
length(type)
## [1] 359
write(token, "token.txt")
write(type, "type.txt")
table(token)
write.table(table(token), "token_table.txt")
write.table(table(token), "token_table_tab.txt", sep="\t")
自分の新しい命令 <- function(){
ここに実行したい命令を順に書いていく
ここに実行したい命令を順に書いていく
ここに実行したい命令を順に書いていく
ここに実行したい命令を順に書いていく
}
myData <- function(){
lines.tmp <- scan(choose.files(), what="char", sep="\n")
body.tmp <- grep("^\\*\\w+:\t", lines.tmp, value=T)
data.tmp <- gsub("^\\*\\w+:\t", "", body.tmp)
data.tmp <- data.tmp[data.tmp != ""]
# 空でない要素のみを残す「イディオム」
}
これを実行すると、myData() という新しい命令(関数)ができる。
function()内に書いた一連の処理が、myData()だけで実行できる。
これは、ファイルを読み込んで、本文のデータ部分だけを取り出す命令。その結果を変数に保存する。
ns502.data <- myData()
length(type)/length(token)
## [1] 0.4838275
それを応用して、length(type)/length(token)を計算すればTTRが出る。
データ部分のみが入っている変数(例えば ns502.data)があるとして、それを対象に実行したらTTRが出るようにする。
この関数の場合、「目的語」を取る。
目的語として()内に記入したものを対象として処理が行われる。例:目的語を d と書いておき、それが処理されるとする。
myTTR <- function(d){
tmp4 <- gsub("[[:punct:]]", " ", d)
tmp5 <- gsub(" +", " ", tmp4)
tmp6 <- tolower(tmp5)
tmp7 <- strsplit(tmp6, " ")
tmp8 <- unlist(tmp7)
token <- sort(tmp8)
type <- unique(token)
length(type)/length(token)
}
myTTR(ns502.data)
## [1] 0.529321
myTTR2 <- function(d){
tmp4 <- gsub("[[:punct:]]", " ", d)
tmp5 <- gsub(" +", " ", tmp4)
tmp6 <- tolower(tmp5)
tmp7 <- strsplit(tmp6, " ")
tmp8 <- unlist(tmp7)
token <- sort(tmp8)
type <- unique(token)
ttr <- length(type)/length(token)
cat(length(type), length(token), ttr)
}
myTTR2(ns502.data)
## 343 648 0.529321