[R] For loop and sqldf

David Winsemius dwinsemius at comcast.net
Sat Apr 30 01:36:07 CEST 2011


On Apr 29, 2011, at 4:27 PM, mathijsdevaan wrote:

> Hi list,
>
> Can anyone tell my why the following does not work? Thanks a lot!  
> Your help
> is very much appreciated.
>
> DF = data.frame(read.table(textConnection("    B  C  D  E  F  G
> 8025  1995  0  4  1  2
> 8025  1997  1  1  3  4
> 8026  1995  0  7  0  0
> 8026  1996  1  2  3  0
> 8026  1997  1  2  3  1
> 8026  1998  6  0  0  4
> 8026  1999  3  7  0  3
> 8027  1997  1  2  3  9
> 8027  1998  1  2  3  1
> 8027  1999  6  0  0  2
> 8028  1999  3  7  0  0
> 8029  1995  0  2  3  3
> 8029  1998  1  2  3  2
> 8029  1999  6  0  0  1"),head=TRUE,stringsAsFactors=FALSE))

list<-sort(unique(DF$C))  ; require(sqldf); data <-list() # added inits

> for (t in 1:length(list))
> 	{
> 	year = as.character(list[t])
> 	data[year]<-sqldf('select * from DF where C = [year]')

#I see you have already gotten a workable answer, but thought you  
might want to see if this would work:

	data[year]<-sqldf(paste('select * from DF where C = ', year,  sep="") )

# Two changes ... let `year` get evaluated and don't put `year` in  
brackets.

> 	}
>

 > data
$`1995`
[1] 8025 8026 8029

$`1996`
[1] 8026

$`1997`
[1] 8025 8026 8027

$`1998`
[1] 8026 8027 8029

$`1999`
[1] 8026 8027 8028 8029
> I am trying to split up the data.frame into 5 new ones, one for  
> every year.
>
>
>
-- 

David Winsemius, MD
West Hartford, CT



More information about the R-help mailing list