我有N个.tsv文件保存在名为“ data”的文件中,并保存到我的rstudio工作目录中,我想找到一种将它们作为单独的数据帧立即导入的方法。下面是一个示例,当我尝试一个接一个地执行时,但示例太多了,我想更快地进行操作。而且每次它们的总数可能都不同。
#read files into R
f1<-read.table(file = 'a_CompositeSources/In1B1A_WDNdb_DrugTargetInteractions_CompositeDBs_Adhesion.tsv', sep = '\t', header = TRUE)
f2<-read.table(file = 'a_CompositeSources/In1B2A_WDNdb_DrugTargetInteractions_CompositeDBs_Cytochrome.tsv', sep = '\t', header = TRUE)
我用过:
library(readr)
library(dplyr)
files <- list.files(path = "C:/Users/user/Documents/kate/data", pattern = "*.tsv", full.names = T)
tbl <- sapply(files, read_tsv, simplify=FALSE) %>%
bind_rows(.id = "id")
##Read files named xyz1111.csv, xyz2222.csv, etc.
filenames <- list.files(path="C:/Users/user/Documents/kate/data",
pattern="*.tsv")
##Create list of data frame names without the ".csv" part
names <-gsub(".tsv", "", filenames)
###Load all files
for(i in names){
filepath <- file.path("C:/Users/user/Documents/kate/data",paste(i,".tsv",sep=""))
assign(i, read.delim(filepath,
colClasses=c("factor","character",rep("numeric",2)),
sep = "\t"))
}
但仅读取第一个文件。
答案 0 :(得分:1)
如果您将所有.tsv文件放在一个文件夹中,并使用lapply或for循环将它们读入列表:
files_to_read <- list.files(path = "a_CompositeSources/",pattern = "\\.tsv$",full.names = T)
all_files <- lapply(files_to_read,function(x) {
read.table(file = x,
sep = '\t',
header = TRUE)
})
如果您需要按名称引用文件,则可以执行names(all_files) <- files_to_read
。然后,您可以继续使用dplyr软件包中的bind_rows
将它们组合到一个数据帧中,或者直接使用数据帧列表。