[R] besoin d'aide

Jim Rogers jrogers at cantatapharm.com
Thu Apr 17 15:03:50 CEST 2003


For writing "special-purpose" merge functions as mentioned below, you will probably want to know about match(). A lot of the essential work of merge() is being done by match(), but merge() also includes a lot of idiot-proofing. Comparing the length of the code for these two functions will give you some idea of the overhead of all that idiot-proofing. If you write your own merge function using match() and cbind(), or match() and data.frame(), it will probably be much faster (but less idiot proof; e.g. if your "by" variable is a factor, you need to be very careful - probably you want to convert it to character prior to the merging operation).  


>The function merge() is like the "join" operation in relational data bases 
>- it's much more powerful than mere concatenation (and thus often much 
>slower, especially on large tables.) 
>
>
>To merely concatenate tables together, use rbind() (to concatenate by rows) 
>or cbind() (to concatenate by columns). 
>
>
>If you do need the power of merge(), but it is too slow for your purposes 
>you may be able to write a special-purpose function in R that does just 
>only you need and much more quickly -- such is the nature of the S language 
>-- it is very powerful, but the powerful general-purpose functions can 
>often be quite slow in particular cases. 
>
>
>Hope this helps, and apologies if I have not completely understood your 
>question. 
>
>
>-- Tony Plate 
>
>
>
>At Wednesday 03:39 PM 4/16/2003 +0200, Erwan BARRET wrote: 
>>J'aimerais savoir si la fonction merge() est la seule disponible pour 
>>concatener des tableaux de données? 
>>Est-ce normal que l'exécution soit lente? 
>> 

James A. Rogers, Ph.D. <rogers at cantatapharm.com>
Statistical Scientist
Cantata Pharmaceuticals
300 Technology Square, 5th floor
Cambridge, MA  02139
617.225.9009 x312
Fax 617.225.9010



More information about the R-help mailing list