Michael Friendly  wrote on 09/09/2011 09:39:27 AM:
> 
> 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"))
> }


Check out the assign() function.

?assign

Something like this should work:

for (i in 1:length(files)) {
     inp <- read.csv(file=files[i], header=TRUE)
     name <- sub(".csv", "", files[i])
        assign(name, inp)
}

Jean


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

	[[alternative HTML version deleted]]

