[R] Read a list of files into named R data.frames
David Winsemius
dwinsemius at comcast.net
Fri Sep 9 16:51:55 CEST 2011
On Sep 9, 2011, at 10:39 AM, Michael Friendly wrote:
> I have a collection of .csv files in a directory, and want to read
> them into R data.frames whose names
> are the same as the file names, without the .csv extension
>
> e.g., from
> > (files <- list.files(pattern="*.csv"))
> [1] "Allstar.csv" "AllstarFull.csv"
> [3] "Appearances.csv" "AwardsManagers.csv"
> [5] "AwardsPlayers.csv" "AwardsShareManagers.csv"
> [7] "AwardsSharePlayers.csv" "Batting.csv"
> [9] "BattingPost.csv" "Fielding.csv"
> [11] "FieldingOF.csv" "FieldingPost.csv"
> [13] "HallOfFame.csv" "HOFold.csv"
> [15] "Managers.csv" "ManagersHalf.csv"
> [17] "Master.csv" "Pitching.csv"
> [19] "PitchingPost.csv" "Salaries.csv"
> [21] "Schools.csv" "SchoolsPlayers.csv"
> [23] "SeriesPost.csv" "Teams.csv"
> [25] "TeamsFranchises.csv" "TeamsHalf.csv"
>
> > Allstar <- read.csv("Allstar.csv", header=TRUE)
> ...
> > TeamsHalf <- read.csv("TeamsHalf.csv", header=TRUE)
>
> Below is what I tried, which reads all the files, but doesn't create
> the R objects in the global environment.
> What is missing here?
>
> for (i in 1:length(files)) {
> inp <- read.csv(file=files[i], header=TRUE)
> name <- sub(".csv", "", files[i])
> cat("Read ", files[i], "\trows: ", nrow(inp), " cols: ",
> ncol(inp), "\n")
Generally the assign function is used to create objects with a
particular name. If you wanted to use eval then the text needs to be
passed through parse() before being given to eval, but that is not the
preferred method.
Perhaps:
assign( files[i], inp)
Inside a for loop I think that gets done in the calling environment
but if you were in a function you would need to use the environment
argument to get it to "stick".
> eval(paste(name, "<- inp"))
> }
>
> Read Allstar.csv rows: 4475 cols: 3
> Read AllstarFull.csv rows: 4676 cols: 8
> Read Appearances.csv rows: 94157 cols: 20
> Read AwardsManagers.csv rows: 57 cols: 6
> Read AwardsPlayers.csv rows: 2679 cols: 6
> Read AwardsShareManagers.csv rows: 344 cols: 7
> Read AwardsSharePlayers.csv rows: 6354 cols: 7
> Read Batting.csv rows: 93955 cols: 24
> Read BattingPost.csv rows: 9840 cols: 22
> Read Fielding.csv rows: 160710 cols: 18
> Read FieldingOF.csv rows: 12028 cols: 6
> Read FieldingPost.csv rows: 10458 cols: 17
> Read HallOfFame.csv rows: 3913 cols: 8
> Read HOFold.csv rows: 289 cols: 7
> Read Managers.csv rows: 3238 cols: 10
> Read ManagersHalf.csv rows: 93 cols: 10
> Read Master.csv rows: 17674 cols: 33
> Read Pitching.csv rows: 40432 cols: 30
> Read PitchingPost.csv rows: 4284 cols: 30
> Read Salaries.csv rows: 21464 cols: 5
> Read Schools.csv rows: 749 cols: 5
> Read SchoolsPlayers.csv rows: 6147 cols: 4
> Read SeriesPost.csv rows: 256 cols: 9
> Read Teams.csv rows: 2655 cols: 48
> Read TeamsFranchises.csv rows: 120 cols: 4
> Read TeamsHalf.csv rows: 52 cols: 10
> Read Xref_Stats.csv rows: 2753 cols: 3
> > ls()
> [1] "files" "i" "inp" "name"
> >
>
> --
> Michael Friendly Email: friendly AT yorku DOT ca
> Professor, Psychology Dept.
> York University Voice: 416 736-5115 x66249 Fax: 416 736-5814
> 4700 Keele Street Web: http://www.datavis.ca
> Toronto, ONT M3J 1P3 CANADA
>
> ______________________________________________
> R-help at r-project.org mailing list
> https://stat.ethz.ch/mailman/listinfo/r-help
> PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
> and provide commented, minimal, self-contained, reproducible code.
David Winsemius, MD
West Hartford, CT
More information about the R-help
mailing list