将文本文件读入R

3

如果此前已有类似问题,我向大家道歉,但我在网上或其他地方找不到示例。

我有一个极其混乱的文本文件(可能是JSON格式),我想在R中分析数据。由于我对该语言仍然很陌生,因此我想读取原始数据并根据需要进行操作。

我该如何从我的计算机上的文本文件中读取JSON?此外,如果它不是JSON,我应该如何将原始数据读入(不解析成列等),以便可以继续了解如何解析它?

提前感谢!


1
如果可能的话,包含一个示例可能是个好主意。我看到了一整个可能性范围,从使用rjson到使用scan()或readLines()与正则表达式的组合,这取决于它是否为json格式。另外,关于如何读取json文件的问题已经在这个网站上得到了无数次回答。如果这是你的问题,那么应该关闭这个问题。 - Joris Meys
3个回答

2
假设你的文件是JSON格式,你可以尝试使用以下包:jsonlite、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)

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


2
使用 rjson 包。特别是要查看 文档 中的 fromJSON 函数。
如果您需要更多指针,请在 R Bloggers 网站 上搜索 rjson。

2
如果您想在R中使用与JSON相关的包,这里有许多其他SO帖子回答了这个问题。我假设您已经在此网站上搜索过“JSON [r]”,那里有大量信息。
如果您只想逐行读取文本文件并稍后处理,则可以使用scan()readLines()。它们似乎做同样的事情,但它们之间有一个重要的区别。 scan()允许您定义要查找的对象类型、数量等。请阅读帮助文件以获取更多信息。您可以使用scan来将每个单词/数字/符号作为向量的元素进行读取,例如:scan(filename,"")。您还可以使用特定的分隔符来分隔数据。请参阅帮助文件中的示例。
要逐行读取,您可以使用readLines(filename)scan(filename,"",sep="\n")。它会将文件的每一行作为元素给出一个向量。这再次允许您对文本进行自定义处理。不过,如果您真的经常这样做,您可能需要考虑在Perl中完成这个任务。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接