#author("2019-04-13T17:58:41+00:00","","") #mynavi(R言語入門) #setlinebreak(on); * 目次 [#v004469d] #contents * 設定ファイルっぽいものを管理する [#e50cd139] #html(<div style="padding-left: 10px;">) Rの練習用に iniファイルを扱うクラスを書いてみた。 ※クラスを扱う為、R6を使用。 ※forの部分はapply 等でもっと高速化できそう。 #mycode2(){{ library(R6) Setting <- R6::R6Class( "Setting", public = list( initialize = function(file) { private$data <- private$load(file) }, get = function(key){ invisible(private$data[1,key]) } ), private = list( data = data.frame(), load = function(file) { data <- readLines(file) data <- data[grep("^[^#]", data)] # コメント行の除去 data <- data[data != ""] # 空行の除去 df <- data.frame() group <- "" for (line in data) { if (length(grep("^\\[.+\\]$", line)) > 0) { group <- gsub("^\\[(.+)\\]$", "\\1", line) } keyVal <- unlist(strsplit(line, "=")) if (length(keyVal)>1) { key <- paste(group, ".", keyVal[1], sep="") df[1,key] <- keyVal[2] } } invisible(df) } ) ) }} test.ini #mycode2{{ # テスト用の設定1 [setting1] var1=111 var2=222 var3=333 # テスト用の設定2 [setting2] var1=xxx var2=yyy var3=zzz }} 利用例) #myterm2(){{ > setting <- Setting$new("test.ini") > print(setting$get("setting1.var1")) [1] "111" }} #html(</div>)