- 追加された行はこの色です。
- 削除された行はこの色です。
#author("2019-04-13T17:35:38+00:00","","")
#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>)