我对R比较新,我在使用apply函数从目录中读取多个表时遇到问题。我希望函数做的是使用带有我感兴趣的表的路径的向量,并生成一个列表,其中包含对应于该文件中路径的每个数据帧的对象。我写了以下代码:
f<- function(directory){
file.list <<- list.files(directory)
file.paths <<- as.vector(paste(directory, file.list, sep = "/"))
tables <- lapply(X = file.paths, FUN = read.table, header = TRUE,sep = "\t" ))
}
根据我的理解,我正在做的是在我想要的目录中创建文件名列表,创建这些文件的路径,以及(我失败的地方)循环这些路径并导入表它们对应于整个file.paths对象并生成包含这些表的列表。我收到以下错误:
Error in FUN(X[[i]], ...) : no lines available in input
有人可以提供任何建议吗?
答案 0 :(得分:9)
以下是一些选项,具体取决于您希望输出的内容:
数据框列表
# Load library
library(data.table)
# Get a List of all files named with a key word, say all `.csv` files
filenames <- list.files("C:/your/folder", pattern="*.csv", full.names=TRUE)
# Load data sets
list.DFs <- lapply(filenames,fread)
我假设您的数据文件以.csv
格式保存。请注意,fread
相当于read.table
但更快
将多个数据框绑定到一个数据框
# Get a List of all files named with a key word, say all `.csv` files
filenames <- list.files("C:/your/folder", pattern="*.csv", full.names=TRUE)
# Load and bind all data sets
data <- rbindlist(lapply(filenames,fread))
将多个数据框作为不同对象加载到全局环境
# Get a List of DF in the directory
filenames <- list.files("C:/your/folder", pattern="*.Rda", full.names=TRUE)
# Load data sets
lapply(filenames, load, .GlobalEnv)