如何从R脚本中的配置文件中获取参数

Sal*_*gzi 30 unix r

有没有办法从R脚本中的文件中读取参数?

我想创建一个配置文件

db_host=xxxx
db_name=xxxx
db_user=xxxx
db_pass=xxxx
Run Code Online (Sandbox Code Playgroud)

然后在R脚本中使用它来创建数据库连接.

dbConnect(PgSQL(), host="xxxx", dbname="xxxxx", user="xxxx", password="xxxxx")
Run Code Online (Sandbox Code Playgroud)

然后我如何在R脚本中使用它.

编辑:我也想知道是否有一种方法可以在R Scripts,Perl Scripts和Java中使用单个配置文件?

Spa*_*man 39

我会去YAML.与XML不同,专为人类可读写而设计.R包"yaml"存在于CRAN上,我确信perl和java包也存在.

http://ftp.heanet.ie/mirrors/cran.r-project.org/web/packages/yaml/index.html

你无法获得比这更多的跨平台:

http://yaml.org/

至少在我写一个YAML FORTRAN包之前......

[编辑]

例.假设你有config.yml:

db:
 host : foo.example.com
 name : Foo Base
 user : user453
 pass : zoom
Run Code Online (Sandbox Code Playgroud)

然后yaml.load_file("config.yml")返回:

$db
$db$pass
[1] "zoom"

$db$user
[1] "user453"

$db$name
[1] "Foo Base"

$db$host
[1] "foo.example.com"
Run Code Online (Sandbox Code Playgroud)

所以你也是:

library(yaml)
config = yaml.load_file("config.yml")
dbConnect(PgSQL(), host=config$db$host, dbname=config$db$name, user=config$db$user, password=config$db$pass)
Run Code Online (Sandbox Code Playgroud)

根据需要添加任意数量的部分和参数.Sweeeeyit.

yaml.load_file将您的配置作为R列表返回,您可以使用$ -notation访问列表的命名元素.


Cha*_*ase 12

您可以source()在主脚本顶部的R脚本中读取配置文件参数.根据您与脚本共享的人员,可能存在数据库安全性问题以及未加密格式的登录信息.最近有一个关于这个问题的问题,我会看看能不能在一分钟内找到它.

无论如何,将所有数据库参数存储在一个名为的文件中config.R,然后运行在主脚本上,运行:

source("config.R") #Will create four objects named "db_host, db_name, db_user, db_pass"

dbConnect(PgSQL(), host=db_host, dbname=db_name, user=db_user, password=db_pass)
Run Code Online (Sandbox Code Playgroud)