我一直想知道是否有人知道如何创建一个在R中加载文件/数据库的循环.说我有一些这样的文件:data1.csv,data2.csv,...,data100.csv.
在某些编程语言中,您可以执行类似此数据+ {x} + .csv的操作,系统将其识别为datax.csv,然后您可以应用循环.
有任何想法吗?
Rei*_*son 51
Sys.glob() 是另一种可能性 - 它的唯一目的是通配符或通配符扩展.
dataFiles <- lapply(Sys.glob("data*.csv"), read.csv)
Run Code Online (Sandbox Code Playgroud)
这会将表单中的所有文件读data[x].csv入列表dataFiles,其中[x]什么也没有.
[注意这是一个不同的模式,以在@约书亚的答案.在那里,list.files()采用正则表达式,而Sys.glob()只使用标准通配符; 可以使用哪些通配符是系统相关的,可以在帮助页面上找到可以使用的详细信息?Sys.glob.
Jos*_*ich 26
见?list.files.
myFiles <- list.files(pattern="data.*csv")
Run Code Online (Sandbox Code Playgroud)
然后你可以循环myFiles.
我会将所有CSV文件放在一个目录中,创建一个列表并执行循环以从列表中的目录中读取所有csv文件.
setwd("~/Documents/")
ldf <- list() # creates a list
listcsv <- dir(pattern = "*.csv") # creates the list of all the csv files in the directory
for (k in 1:length(listcsv)){
ldf[[k]] <- read.csv(listcsv[k])
}
str(ldf[[1]])
Run Code Online (Sandbox Code Playgroud)
小智 6
阅读文件中的标题,以便我们可以使用它们替换合并文件中的标题
library(dplyr)
library(readr)
list_file <- list.files(pattern = "*.csv") %>%
lapply(read.csv, stringsAsFactors=F) %>%
bind_rows
Run Code Online (Sandbox Code Playgroud)
小智 5
fi<-list.files(directory_path,full.names=T)
dat<-lapply(fi,read.csv)
Run Code Online (Sandbox Code Playgroud)
dat 将包含列表中的数据集