【问题标题】:How do you parse out output in R and read files in R package如何解析 R 中的输出并读取 R 包中的文件
【发布时间】:2014-08-09 17:29:48
【问题描述】:

我有这个函数可以从 .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.当我使用 RStudio 将此代码构建为包含 vcenter.csv 文件的包并安装该包时,当我运行 output.R 函数时,它看不到 vcenter.csv 文件。我应该把vcenter.csv放在哪里?我尝试将它放在库目录中,与 output.r 脚本相同的目录,不走运。我不断收到文件(文件,“rt”)连接错误。有什么想法吗?

【问题讨论】:

  • 使用cat() 而不是print() 来避免[1]
  • @DirkEddelbuettel,当我使用 cat() 时,我在浏览器上收到 object not found 错误。但是,当我打印时,我得到了结果,但还有其他问题。除了 cat() 还有其他方法可以摆脱 [1] 吗?

标签: r package rstudio


【解决方案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 扩展链接。

【讨论】:

  • 我的包名为 vCenter,我正在这样做,vcenter
  • 很可能是因为你没有把文件放在那里,或者你没有安装你的包。
猜你喜欢
  • 2017-02-23
  • 1970-01-01
  • 2011-04-08
  • 2016-12-18
  • 2015-04-19
  • 2023-03-28
  • 1970-01-01
  • 2018-09-29
  • 1970-01-01
相关资源
最近更新 更多