[R] Read a list of files into named R data.frames

Michael Friendly friendly at yorku.ca
Fri Sep 9 16:39:27 CEST 2011


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")
     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



More information about the R-help mailing list