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

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

我试过了:

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

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

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

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


当前回答

我会用下面的方法。它应该工作得很好,而且看起来并不难看,至少对我来说是这样的:

singleString <- paste(readLines("foo.txt"), collapse=" ")

其他回答

我会用下面的方法。它应该工作得很好,而且看起来并不难看,至少对我来说是这样的:

singleString <- paste(readLines("foo.txt"), collapse=" ")

如何:

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

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

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

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

如果有人在3年后还在考虑这个问题,Hadley Wickham的阅读器包有一个方便的read_file()函数可以为你做这件事。

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

看来你的解决方案并不难看。你可以像这样使用函数,让它变得专业

第一个方法

new.function <- function(filename){
  readChar(filename, file.info(filename)$size)
}

new.function('foo.txt')

第二种方式

new.function <- function(){
  filename <- 'foo.txt'
  return (readChar(filename, file.info(filename)$size))
}

new.function()