Hi Josh, You are definitely right. And were all time. Yes, the problem was always with the write.csv(). I though it was with the "ds". Thank you very much.
Cheers, Rui > Date: Tue, 24 May 2011 14:30:56 -0700 > Subject: Re: [R] How to intantiate a list of data.frames? > From: jwiley.ps...@gmail.com > To: ruimax...@hotmail.com > CC: r-help@r-project.org > > Hi Rui, > > Please look at the documentation for ?write.csv > > I do not have oilDF, but my guess is that you make the object, "ds" > fine, but then you are trying to pass a list to write.csv which works > on matrices or data frames (or attempts to coerce to such). The > easiest answer is probably to write each element of "ds" (that is, > each data frame) to a separate file. > > Cheers, > > Josh > > On Sun, May 22, 2011 at 12:11 PM, Rui Maximo <ruimax...@hotmail.com> wrote: > > I will post the whole function, but I believe the problem is in the 3th > > part. > > The issue is that oilDF has different number of rows than oilDF2. > > > > Thank you, > > Rui > > > > myScan <- function(dirPath, num) > > { > > #dirPath is the name of the directory where we want to apply the function. > > It should be called from the immediate above level without the last 3 > > characters. For example dirPath="oil_0" > > #num is the mussel number > > > > #Heart rate > > startPath=getwd() > > workPath=paste(startPath,"/", dirPath,"_HR", sep="") > > setwd(workPath) > > temp=dir() > > d=sort(temp) > > oilDF=read.table (d[1], header=TRUE) > > oilDF=data.frame(oilDF[,1], oilDF[,2], oilDF[,num+2]) > > for(i in 2:length(d)) > > { > > temp <- read.table(d[i], header=TRUE) > > temp=data.frame(temp[,1], temp[,2], temp[,num+2]) > > colnames(temp) <- colnames(oilDF) > > oilDF=rbind(oilDF,temp) > > } > > setwd(startPath) > > > > #Valve Gape > > workPath=paste(startPath,"/", dirPath,"_VG", sep="") > > setwd(workPath) > > temp=dir() > > d=sort(temp) > > oilDF2=read.table (d[1], header=FALSE) > > oilDF2=data.frame(oilDF2[,1],oilDF2[,2],oilDF2[,num+3]) > > for(i in 2:length(d)) > > { > > temp <- read.table(d[i], header=FALSE) > > temp=data.frame(temp[,1], temp[,2], temp[,num+3]) > > colnames(temp) <- colnames(oilDF2) > > oilDF2=rbind(oilDF2,temp) > > } > > > > #Pack both signals in a vector of dataframes for each Mussel. > > ds <- vector("list", 2) > > timeHR = as.numeric(strptime(paste(oilDF[,1],oilDF[,2]), "%m/%d/%y > > %H:%M:%OS")) > > timeVG = as.numeric(strptime(paste(oilDF2[,1],oilDF2[,2]), "%d/%m/%y > > %H:%M:%OS")) > > ds[[1]] <- data.frame(timeHR,oilDF[,3]) > > ds[[2]] <- data.frame(timeVG,oilDF2[,3]) > > write.csv(ds,paste(startPath, "/", "mussel_", i, dirPath, ".csv", > > sep="")) > > return(ds) > > } > > > >> Date: Sun, 22 May 2011 11:33:38 -0700 > >> Subject: Re: [R] How to intantiate a list of data.frames? > >> From: jwiley.ps...@gmail.com > >> To: ruimax...@hotmail.com > >> CC: r-help@r-project.org > >> > >> Hi Rui, > >> > >> data frames must have the same number of rows, but two different data > >> frames stored within a list do not need to have the same number of > >> rows. Can you please post the code that is giving the error? > >> > >> Josh > >> > >> On Sun, May 22, 2011 at 9:41 AM, Rui Maximo <ruimax...@hotmail.com> wrote: > >> > Hi Josh, > >> > > >> > Sorry, your examples have equal number of rows in both df and df2. > >> > In my situation they haven't. > >> > Strangely, your solution have worked only when I am copy post the code > >> > into > >> > the command line. > >> > If I use the code inside of a function I get an error at: > >> > return(ds) > >> > ERROR: arguments imply differing number of rows > >> > > >> > Thanks, > >> > Rui > >> > > >> >> Date: Sat, 21 May 2011 11:46:05 -0700 > >> >> Subject: Re: [R] How to intantiate a list of data.frames? > >> >> From: jwiley.ps...@gmail.com > >> >> To: ruimax...@hotmail.com > >> >> CC: r-help@r-project.org > >> >> > >> >> Hi Rui, > >> >> > >> >> Here is one option: > >> >> > >> >> ds <- vector("list", 6) > >> >> for(i in 1:6) ds[[i]] <- list(df = mtcars[, c(i, i + 2)], df2 = > >> >> mtcars[, c(i, i + 2)] + 10) > >> >> > >> >> another could be: > >> >> > >> >> altds <- lapply(1:6, function(x) { > >> >> list(df = mtcars[, c(x, x + 2)], df2 = mtcars[, c(x, x + 2)] + 10) > >> >> }) > >> >> > >> >> all.equal(ds, altds) > >> >> > >> >> For some documentation, see > >> >> > >> >> ?vector > >> >> ?lapply > >> >> > >> >> Cheers, > >> >> > >> >> Josh > >> >> > >> >> On Sat, May 21, 2011 at 10:47 AM, Rui Maximo <ruimax...@hotmail.com> > >> >> wrote: > >> >> > > >> >> > Hello, > >> >> > > >> >> > I am newbie to R and I want to do this: > >> >> > > >> >> > for(i in 1:6) > >> >> > { > >> >> > ds[i] <- list(df=data.frame(oilDF[,1],oilDF[,i+2]), > >> >> > df2=data.frame(oilDF2[,1],oilDF2[,i+2])) > >> >> > } > >> >> > > >> >> > #oilDF and oilDF2 are 2 data frames with several columns. They have > >> >> > different number of rows > >> >> > > >> >> > #I want to have for example ds[1]$df, ds[1]$df2 with the respective > >> >> > data.frames. > >> >> > #How can I instantiate a list of data.frames pairs with different > >> >> > number > >> >> > of rows? > >> >> > > >> >> > Thank you, > >> >> > Rui > >> >> > > >> >> > [[alternative HTML version deleted]] > >> >> > > >> >> > ______________________________________________ > >> >> > 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. > >> >> > > >> >> > >> >> > >> >> > >> >> -- > >> >> Joshua Wiley > >> >> Ph.D. Student, Health Psychology > >> >> University of California, Los Angeles > >> >> http://www.joshuawiley.com/ > >> > > >> > >> > >> > >> -- > >> Joshua Wiley > >> Ph.D. Student, Health Psychology > >> University of California, Los Angeles > >> http://www.joshuawiley.com/ > > > > > > -- > Joshua Wiley > Ph.D. Student, Health Psychology > University of California, Los Angeles > http://www.joshuawiley.com/ [[alternative HTML version deleted]] ______________________________________________ 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.