【问题标题】:Read a Text File into R将文本文件读入 R
【发布时间】:2015-10-16 00:12:23
【问题描述】:

如果之前有人问过这个问题,我深表歉意,但我无法在网上或其他地方找到示例。

我的文本文件中有非常脏的数据文件(可能是 JSON)。我想分析 R 中的数据,并且由于我还是该语言的新手,我想读取原始数据并从那里根据需要进行操作。

我将如何从我机器上的文本文件中读取 JSON?此外,如果不是 JSON,我如何按原样读取原始数据(未解析为列等),以便我可以继续了解如何根据需要进行解析?

提前致谢!

【问题讨论】:

  • 如果可能的话,包含一个样本可能是个好主意。我看到了各种各样的可能性,从使用 rjson 到使用 scan() 或 readLines() 与正则表达式的组合,具体取决于它是否为 json。在旁注中,如何读取 json 文件已在此站点上多次回答。如果这是您的问题,应该关闭。

标签: json r


【解决方案1】:

使用rjson 包。特别是看documentation中的fromJSON函数。

如果您需要进一步的指示,请在R Bloggers website 处搜索 rjson。

【讨论】:

    【解决方案2】:

    如果您想在 R 中使用与 JSON 相关的包,SO 上还有许多其他帖子回答了这个问题。我想你已经在这个网站上搜索了 JSON [r],那里有很多信息。

    如果您只想逐行读取文本文件并稍后处理,则可以使用scan()readLines()。它们似乎做同样的事情,但它们之间有一个重要的区别。

    scan() 可让您定义要查找的对象类型、数量等。阅读帮助文件以获取更多信息。您可以使用 scan 读取每个单词/数字/符号作为向量的元素,例如使用scan(filename,"")。您还可以使用特定的分隔符来分隔数据。另请参阅帮助文件中的示例。

    要逐行读取,请使用readLines(filename)scan(filename,"",sep="\n")。它为您提供了一个向量,其中文件的行作为元素。这再次允许您对文本进行自定义处理。再说一次,如果你真的必须经常这样做,你可能需要考虑在 Perl 中这样做。

    【讨论】:

      【解决方案3】:

      假设你的文件是 JSON 格式,你可以试试 jsonliteRJSONIOrjson 包。这三个包可以让你使用fromJSON函数。

      要安装软件包,您可以使用 install.packages 函数。例如:

      install.packages("jsonlite")
      

      而且,无论何时安装包,您都可以使用函数库进行加载。

      library(jsonlite) 
      

      通常,行分隔的 JSON 每行有一个对象。因此,您需要逐行阅读并收集对象。例如:

      con <- file('myBigJsonFile.json') 
      open(con)
      objects <- list()
      index <- 1
      while (length(line <- readLines(con, n = 1, warn = FALSE)) > 0) {
          objects[[index]] <- fromJSON(line)
          index <- index + 1
      } 
      close(con)
      

      之后,您将拥有 objects 变量中的所有数据。使用该变量,您可以提取所需的信息。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-03-09
        • 2016-01-06
        • 2012-12-26
        • 2013-12-09
        • 2013-10-30
        相关资源
        最近更新 更多