将文本文件读入R中

时间:2010-09-27 13:35:49

标签: json r

如果之前已经提出这个问题我很抱歉,但我无法在网上或其他地方找到示例。

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

我如何从机器上的文本文件中读取JSON?另外,如果它不是JSON,我怎么能原样读取原始数据(没有解析成列等)所以我可以继续找出如何根据需要解析它?

提前致谢!

3 个答案:

答案 0 :(得分:2)

使用rjson包。请特别注意documentation中的fromJSON函数。

如果您想要更多指针,请在R Bloggers website搜索rjson。

答案 1 :(得分:2)

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

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

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

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

答案 2 :(得分:2)

假设您的文件是JSON格式,您可以尝试使用 jsonlite ou RJSONIO rjson 这些软件包。这三个包允许您使用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)

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