如果之前已经提出这个问题我很抱歉,但我无法在网上或其他地方找到示例。
我在文本文件中有非常脏的数据文件(可能是JSON)。我想分析R中的数据,因为我还是该语言的新手,我想读取原始数据并根据需要进行操作。
我如何从机器上的文本文件中读取JSON?另外,如果它不是JSON,我怎么能原样读取原始数据(没有解析成列等)所以我可以继续找出如何根据需要解析它?
提前致谢!
答案 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)
之后,您拥有对象变量中的所有数据。使用该变量,您可以提取所需的信息。