从文本文件中读取配置

时间:2012-12-03 10:28:00

标签: r rjava

我有一个包含条目的txt文件

indexUrl=http://192.168.2.105:9200
jarFilePath = /home/soumy/lib

如何从R读取此文件并获取jarFilePath的值?

我需要这个设置.jaddClassPath() ...我有问题将jar复制到classpath,因为windows和linux中的斜杠不同

在Linux中

我想用

.jaddClassPath(dir("target/mavenLib", full.names=TRUE ))

但在Windows中

.jaddClassPath(dir("target\\mavenLib", full.names=TRUE ))

所以想从属性文件中读取jar的位置!!! 如果还有其他选择,请告诉我也

2 个答案:

答案 0 :(得分:4)

我不知道包是否提供特定的界面。

如果没有,我首先使用read.table:

在数据框中加载数据
myProp <- read.table("path/to/file/filename.txt, header=FALSE, sep="=", row.names=1, strip.white=TRUE, na.strings="NA", stringsAsFactors=FALSE)

sep="="显然是分隔符,这将很好地分隔您的属性名称和值。

row.names=1表示第一列包含您的行名,因此您可以通过这种方式索引数据属性以检索所需的每个属性。 例如:myProp["jarFilePath", 2]将返回"/home/soumy/lib"

strip.white=TRUE会删除您可能不关心的前导和尾随空格。

可以方便地将加载的数据框转换为命名向量,以便更清晰地检索属性值:myPropVec <- setNames(myProp[[2]], myProp[[1]])

然后从名称中检索属性值:myPropVec["jarFilePath"]也将返回"/home/soumy/lib"

答案 1 :(得分:4)

截至2016年9月,CRAN拥有包properties

它正确处理属性值中的=(但在第一个=符号后不处理空格。)

示例:

属性文件/tmp/my.properties的内容:

host=123.22.22.1
port=798
user=someone
pass=a=b

R代码:

install.packages("properties")
library(properties)

myProps <- read.properties("/tmp/my.properties")

然后,您可以访问myProps$host等属性,特别是myProps$pass符合预期的a=b