我有一些基本代码可以从共享相同文件格式的文件夹中读取多个文件。文本文件本身每个都包含一个或两个句子;没有列,标题或类似的东西。
我最初使用read.table来做这个但是在做了一些阅读之后,特别是看this recent post我想我会看到我是否可以使用fread来让事情变得更快一些。
library(data.table)
files <- list.files(path = "C:/Documents", pattern = "*.txt")
readdata <- function(x)
{
mydata <- fread(x, sep=" ")
return(mydata)
}
all.files <- lapply(files, readdata)
final.data <- rbindlist(all.files)
当我运行此代码时,出现以下错误:
Error in fread(x, sep = " ") : File not found: 1.txt
1.txt是文件夹中的第一个文件。任何人都可以弄明白为什么路径文件夹是正确的(我将上面的文件夹更改为通用的东西放在这里)所以我似乎无法看到问题是什么。
答案 0 :(得分:4)
您必须指定文件的路径:
path <- "C:/Documents"
readdata <- function(x)
{
f <- file.path(path, x)
mydata <- fread(f, sep=" ")
return(mydata)
}
另一种选择是将list.files
与参数full.names = TRUE
一起使用。这将返回文件名及其路径。
files <- list.files(path = "C:/Documents", pattern = "*.txt", full.names = TRUE)
readdata <- function(x)
{
mydata <- fread(x, sep=" ")
return(mydata)
}