如何解析R中的输出并读取R包中的文件

时间:2014-08-09 17:29:48

标签: r package rstudio

我有这个函数从.csv文件中读取数据并以json格式输出结果:

我的vcenter.csv文件如下所示:

Host       Time    Cpu
server1 1406284200 0.0920
server1 1406286000 0.0920
server1 1406287800 0.0912
server1 1406289600 0.0928
server1 1406291400 0.0912
server1 1406293200 0.0904

output<-function(myname){
  library(rjson)
res<-read.csv("vcenter.csv", header=T, sep=',')

servers <- split(res, res$Host)
dumFun <- function(x){
  sData <- servers[x][[1]]
  if(nrow(sData) >0){
    # create appropriate list
    dumList <- unname(apply(sData[,2:3], 1, function(y) unname(as.list(y))))
    return(toJSON(list(name = x, data = dumList))) 
  }
}       
jsData <- lapply(names(servers), dumFun)
jsInd <- sapply(jsData, is.null)

p<-paste(jsData[!jsInd], collapse = ',')
p<-paste('[', p, ']')
print(p)
}

一个。当我远程调用此函数时,我会得到类似的结果:

[1] "[ {\"name\":\"server1\",\"data\":[[1406284200,0.387200012]

是否可以不在输出中显示[1]和\ _值?

b。当我使用RScenudio构建此代码作为包含vcenter.csv文件并安装包时,当我运行output.R函数时,它看不到vcenter.csv文件。我应该把vcenter.csv放在哪里?我尝试将它放在库目录中,与output.r脚本相同的目录,而不是运气。我一直收到文件(文件,&#34; rt&#34;)连接错误。有什么想法吗?

1 个答案:

答案 0 :(得分:1)

  1. 正如Dirk所说,使用cat()代替print()

  2. 将文件放在inst目录中。如果它是数据文件,那么人们经常使用的地方是inst/extdata。见http://cran.r-project.org/doc/manuals/r-devel/R-exts.html#Data-in-packages

    然后,在已安装的软件包中,您可以找到如下数据文件:

    vcenter <- system.file("inst/extdata/vcenter.csv", package = packageName())
    res <- read.csv(vcenter, header = TRUE, sep = ",")
    ...
    

    请注意,您不必解析程序包中的文件,也可以将其作为Rdata文件包含在内, 请参阅上面的写作R扩展链接。