Hi there,
Thanks for your time in advance.
I am trying to read in multiple files. For example,
data.1940 <-
read.table("c:/data/1940.csv",header=TRUE,sep=",")
data.1950 <-
read.table("c:/data/1950.csv",header=TRUE,sep=",")
data.1960 <-
read.table("c:/data/1960.csv",header=TRUE,sep=",")
How can I write a loop to read the data? I was trying to use the following
year<-c(1940,1950,1960)
for (j in 1:3){
data.year[j] <- read.table("c:/data/year[j]
.csv",header=TRUE,sep=",")
}
But it is obviously wrong, as the marco is not proctected.
I have been googling around for a while but haven't succeeded in
finding any solutions. Thanks again for your help.
Le
Dear Le,
Try this:
year<-c(1940,1950,1960)
for (i in y) assign(paste("data.",i,sep=""),
read.table("c:/data/i.csv",header=TRUE,sep=","))
data.1940
data.1950
data.1960
See ?assign for more details.
HTH,
Jorge
On Sat, Mar 21, 2009 at 3:53 PM, Le Wang <ruser.le@gmail.com> wrote:
> Hi there,
>
> Thanks for your time in advance.
>
> I am trying to read in multiple files. For example,
>
> data.1940 <-
read.table("c:/data/1940.csv",header=TRUE,sep=",")
> data.1950 <-
read.table("c:/data/1950.csv",header=TRUE,sep=",")
> data.1960 <-
read.table("c:/data/1960.csv",header=TRUE,sep=",")
>
> How can I write a loop to read the data? I was trying to use the following
>
> year<-c(1940,1950,1960)
>
> for (j in 1:3){
>
> data.year[j] <- read.table("c:/data/year[j]
> .csv",header=TRUE,sep=",")
>
> }
>
> But it is obviously wrong, as the marco is not proctected.
>
> I have been googling around for a while but haven't succeeded in
> finding any solutions. Thanks again for your help.
>
> Le
>
> ______________________________________________
> R-help@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.
>
[[alternative HTML version deleted]]
Sorry. Not sure what you mean by macro not " protected."
?paste
?assign
Perhaps:
> filelist <- paste("c:\\data\\", year,".csv",
sep="")
> filelist
[1] "c:\\data\\1940.csv" "c:\\data\\1950.csv"
"c:\\data\\1960.csv"
for (i in filelist) {
assign( paste("data.", year[i], sep="") ,
read.table( file=i, , header=TRUE, sep=",")
)
}
On Mar 21, 2009, at 3:53 PM, Le Wang wrote:
> Hi there,
>
> Thanks for your time in advance.
>
> I am trying to read in multiple files. For example,
>
> data.1940 <-
read.table("c:/data/1940.csv",header=TRUE,sep=",")
> data.1950 <-
read.table("c:/data/1950.csv",header=TRUE,sep=",")
> data.1960 <-
read.table("c:/data/1960.csv",header=TRUE,sep=",")
>
> How can I write a loop to read the data? I was trying to use the
> following
>
> year<-c(1940,1950,1960)
>
> for (j in 1:3){
>
> data.year[j] <- read.table("c:/data/year[j]
> .csv",header=TRUE,sep=",")
>
> }
>
> But it is obviously wrong, as the marco is not proctected.
>
> I have been googling around for a while but haven't succeeded in
> finding any solutions. Thanks again for your help.
>
> Le
David Winsemius, MD
Heritage Laboratories
West Hartford, CT
R does not directly support macros and I don't think that that is what
you meant. Also we probably want to put the data frames in a list
so we can easily operate over all of them later. (If these are time
series also see read.zoo in the zoo package.)
setwd("c:/data")
filenames <- paste(year, "csv", sep = ".")
DFlist <- sapply(filenames, read.csv, simplify = FALSE)
On Sat, Mar 21, 2009 at 3:53 PM, Le Wang <ruser.le at gmail.com>
wrote:> Hi there,
>
> Thanks for your time in advance.
>
> I am trying to read in multiple files. For example,
>
> ?data.1940 <-
read.table("c:/data/1940.csv",header=TRUE,sep=",")
> ?data.1950 <-
read.table("c:/data/1950.csv",header=TRUE,sep=",")
> ?data.1960 <-
read.table("c:/data/1960.csv",header=TRUE,sep=",")
>
> How can I write a loop to read the data? I was trying to use the following
>
> ? ? ? ?year<-c(1940,1950,1960)
>
> ? ? ? ?for (j in 1:3){
>
> ? ? ? ? ? ? ? ? ? ? ?data.year[j] <- read.table("c:/data/year[j]
> .csv",header=TRUE,sep=",")
>
> ? ? ? ?}
>
> But it is obviously wrong, as the marco is not proctected.
>
> I have been googling around for a while but haven't succeeded in
> finding any solutions. Thanks again for your help.
>
> Le
>
> ______________________________________________
> 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.
>
data.year[j] <-
read.table(paste("c:/data/",year[j],".csv",sep=''),header=T,sep=",")
should do it.
Le Wang wrote:> Hi there,
>
> Thanks for your time in advance.
>
> I am trying to read in multiple files. For example,
>
> data.1940 <-
read.table("c:/data/1940.csv",header=TRUE,sep=",")
> data.1950 <-
read.table("c:/data/1950.csv",header=TRUE,sep=",")
> data.1960 <-
read.table("c:/data/1960.csv",header=TRUE,sep=",")
>
> How can I write a loop to read the data? I was trying to use the following
>
> year<-c(1940,1950,1960)
>
> for (j in 1:3){
>
> data.year[j] <- read.table("c:/data/year[j]
> .csv",header=TRUE,sep=",")
>
> }
>
> But it is obviously wrong, as the marco is not proctected.
>
> I have been googling around for a while but haven't succeeded in
> finding any solutions. Thanks again for your help.
>
> Le
>
> ______________________________________________
> 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.
>
COnsider the use of a 'list':
dataYear <- lapply(c(1940, 1950, 1960), function(.file){
read.table(paste("c:/data/", .file, '.csv',
sep=''), header=TRUE, sep=',')
})
The you can access your data:
dataYear[['1940']]
or
dataYear$"1940"
On Sat, Mar 21, 2009 at 3:53 PM, Le Wang <ruser.le at gmail.com>
wrote:> Hi there,
>
> Thanks for your time in advance.
>
> I am trying to read in multiple files. For example,
>
> ?data.1940 <-
read.table("c:/data/1940.csv",header=TRUE,sep=",")
> ?data.1950 <-
read.table("c:/data/1950.csv",header=TRUE,sep=",")
> ?data.1960 <-
read.table("c:/data/1960.csv",header=TRUE,sep=",")
>
> How can I write a loop to read the data? I was trying to use the following
>
> ? ? ? ?year<-c(1940,1950,1960)
>
> ? ? ? ?for (j in 1:3){
>
> ? ? ? ? ? ? ? ? ? ? ?data.year[j] <- read.table("c:/data/year[j]
> .csv",header=TRUE,sep=",")
>
> ? ? ? ?}
>
> But it is obviously wrong, as the marco is not proctected.
>
> I have been googling around for a while but haven't succeeded in
> finding any solutions. Thanks again for your help.
>
> Le
>
> ______________________________________________
> 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.
>
--
Jim Holtman
Cincinnati, OH
+1 513 646 9390
What is the problem that you are trying to solve?