如何导入一个纯文本文件作为单字符字符串在R?我想这可能会有一个非常简单的答案但是当我今天尝试这个的时候,我发现我找不到一个函数来做这个。

例如,假设我有一个文件foo.txt,其中包含我想要textmine的内容。

我试过了:

scan("foo.txt", what="character", sep=NULL)

但这仍然返回一个向量。我得到了它的工作与:

paste(scan("foo.txt", what="character", sep=" "),collapse=" ")

但这是一个相当丑陋的解决方案,可能也不稳定。


当前回答

很遗憾莎伦的方法不能再用了。我在我的。rprofile文件中添加了Josh O'Brien的解决方案和asieira的修改:

read.text = function(pathname)
{
    return (paste(readLines(pathname), collapse="\n"))
}

然后像这样使用:TXT = read.text('path/to/my/file.txt')。我无法复制bumpkin(10月14日28日)的发现,writeLines(txt)显示了file.txt的内容。同样,在写入(txt, '/tmp/out')后,命令diff /tmp/out路径/到/my/file.txt没有报告差异。

其他回答

readChar没有太多的灵活性,所以我结合了您的解决方案(readLines和粘贴)。

我还在每行之间添加了一个空格:

con <- file("/Users/YourtextFile.txt", "r", blocking = FALSE)
singleString <- readLines(con) # empty
singleString <- paste(singleString, sep = " ", collapse = " ")
close(con)

读取器包有一个功能,可以为您做所有事情。

install.packages("readr") # you only need to do this one time on your system
library(readr)
mystring <- read_file("path/to/myfile.txt")

这将替换包stringr中的版本。

下面是来自@JoshuaUlrich的解决方案的一个变体,它使用了正确的大小,而不是硬编码的大小:

fileName <- 'foo.txt'
readChar(fileName, file.info(fileName)$size)

请注意,readChar为您指定的字节数分配空间,因此readChar(fileName, .Machine$integer.max)不能很好地工作…

很遗憾莎伦的方法不能再用了。我在我的。rprofile文件中添加了Josh O'Brien的解决方案和asieira的修改:

read.text = function(pathname)
{
    return (paste(readLines(pathname), collapse="\n"))
}

然后像这样使用:TXT = read.text('path/to/my/file.txt')。我无法复制bumpkin(10月14日28日)的发现,writeLines(txt)显示了file.txt的内容。同样,在写入(txt, '/tmp/out')后,命令diff /tmp/out路径/到/my/file.txt没有报告差异。

如何:

string <- readChar("foo.txt",nchars=1e6)