[R] Doing a Task Without Using a For Loop

Tom La Bone booboo at gforcecable.com
Wed Oct 15 13:33:18 CEST 2008


I want to thank everyone for the help. I ended up having to use a loop to
assign values from the table to NinYear. However, as I have played with the
full datasets I have noticed that R is MUCH faster if I use vectors in the
loop rather than columns of a dataframe. In the specific case of 43,000
lines of data, assigning values from the table to the 43,000 elements of a
vector took 6 seconds whereas assigning values from the table to 43,000
elements of a dataframe took 21 minutes. Why is there such a huge
difference?

Tom




Tom La Bone wrote:
> 
> Assume that I have the dataframe "data1", which is listed at the end of
> this message. I want count the number of lines that each person has for
> each year. For example, the person with ID=213 has 15 entries (NinYear)
> for 1953. The following bit of code calculates NinYear:
> 
> for (i in 1:length(data1$ID)) {
>   data1$NinYear[i] <- length(data1[data1$Year==data1$Year[i] &
>     data1$ID==data1$ID[i],1]) }
> 
> This seems to work but is horribly slow (some files I am working with have
> over 500,000 lines). Can anyone suggest a faster way of doing this,
> perhaps a way that does not use a for loop? Thanks.
> 
> Tom
> 
> ID	Year	NinYear
> 209	1971	0
> 209	1971	0
> 213	1951	0
> 213	1951	0
> 213	1953	0
> 213	1953	0
> 213	1953	0
> 213	1953	0
> 213	1953	0
> 213	1953	0
> 213	1953	0
> 213	1953	0
> 213	1953	0
> 213	1953	0
> 213	1953	0
> 213	1953	0
> 213	1953	0
> 213	1953	0
> 213	1953	0
> 213	1954	0
> 213	1954	0
> 213	1954	0
> 213	1954	0
> 213	1954	0
> 213	1954	0
> 213	1954	0
> 213	1954	0
> 213	1954	0
> 213	1954	0
> 213	1954	0
> 213	1955	0
> 213	1955	0
> 234	1953	0
> 234	1953	0
> 234	1953	0
> 234	1953	0
> 234	1953	0
> 234	1958	0
> 234	1958	0
> 234	1965	0
> 234	1965	0
> 234	1965	0
> 249	1952	0
> 249	1952	0
> 
> 
> 
> 

-- 
View this message in context: http://www.nabble.com/Doing-a-Task-Without-Using-a-For-Loop-tp19974078p19991682.html
Sent from the R help mailing list archive at Nabble.com.



More information about the R-help mailing list