导入多个CSV文件,运行函数,然后将结果合并到R

时间:2018-07-22 05:25:54

标签: r dataframe

我想从一个文件夹导入多个CSV文件,在它们上运行一个功能,然后合并矢量结果。

当前我正在导入CSV文件,如下所示:

Arbys.Data <- read.csv("~/Desktop/CSV Restaurant Data/MR - ARBYS.csv")
BJs.Data <- read.csv("~/Desktop/CSV Restaurant Data/MR - BJS RESTERAUNT 
& BREWERY.csv")
Bojangles.Data <- read.csv("~/Desktop/CSV Restaurant Data/MR - BOJANGLES 
FAMOUS CHICKEN N BISCUITS.csv")

通过我的功能单独运行

Arbys <- My.Function(Arbys.Data) 
BJs <- My.Function(BJs.Data) 
Bojangles <- My.Function(Bojangles.Data) 

然后将结果合并到这样的数据框中

RP<-rbind.data.frame(Arbys,BJs,Bojangles)

可以肯定,使用lapply或其他方法比较容易。我尝试了这样的运行代码

filenames<- list.files("~/Desktop/CSV Restaurant Data/", pattern ="*.csv")
list.df <- lapply(filenames, read.csv)
Data<-My.Function(list.df)

Data.Frame<- rbind.data.frame(Data)

但是结果不能满足我的需求。

3 个答案:

答案 0 :(得分:0)

使用tidyverse pkg,请尝试以下

Data <- dir(path="~/Desktop/CSV Restaurant Data/",pattern = "*.csv",include.dirs = TRUE, full.names = TRUE)%>%
map(read_csv) %>%    # map :: read_csv() from the readr package
reduce(rbind)        # reduce :: with rbind into one dataframe
str(Data) 

答案 1 :(得分:0)

您快到了。您需要完成lapply的其余步骤,然后将结果与do.call(rbind, ...)合并:

Data<-lapply(list.df, My.Function)

Data.Frame<- do.call(rbind, Data)

答案 2 :(得分:0)

应该很简单。

soup.find('p', class_ = "topVenue-details-info-details-subtitle").text.split('~')[1]