[R] importing data

Ivan Calandra ivan.calandra at u-bourgogne.fr
Mon Jan 28 16:47:44 CET 2013


This code is indeed much shorter. About the speed, I guess it should be 
faster, but you should test it with system.time()

I'm glad that it helped.
Ivan


--
Ivan CALANDRA
Université de Bourgogne
UMR CNRS/uB 6282 Biogéosciences
6 Boulevard Gabriel
21000 Dijon, FRANCE
+33(0)3.80.39.63.06
ivan.calandra at u-bourgogne.fr
http://biogeosciences.u-bourgogne.fr/calandra

Le 28/01/13 16:38, Ray Cheung a écrit :
> Dear Ivan,
> It works perfectly fine now. I love this code more since I need not 
> delete the NULL list myself (and it should be faster, right?). Thank 
> you very much for your help!
> cheers,
> Ray
>
> On Mon, Jan 28, 2013 at 5:32 PM, Ivan Calandra 
> <ivan.calandra at u-bourgogne.fr <mailto:ivan.calandra at u-bourgogne.fr>> 
> wrote:
>
>     What about this then:
>     list_of_datasets <- lapply(file_names, read.table,
>     other_args_to_read.table)
>
>     Something that might then be useful is:
>     names(list_of_datasets) <- file_names
>
>     Does it do it now?
>
>
>     Ivan
>
>     --
>     Ivan CALANDRA
>     Université de Bourgogne
>     UMR CNRS/uB 6282 Biogéosciences
>     6 Boulevard Gabriel
>     21000 Dijon, FRANCE
>     +33(0)3.80.39.63.06 <tel:%2B33%280%293.80.39.63.06>
>     ivan.calandra at u-bourgogne.fr <mailto:ivan.calandra at u-bourgogne.fr>
>     http://biogeosciences.u-bourgogne.fr/calandra
>
>     Le 28/01/13 07:34, Ray Cheung a écrit :
>
>         Thanks a million for all help provided!! I can do what I
>         intend to using the "for loop". However, I'm still eager to
>         try the list.files approach. Here is the error message that I
>         got using Ivan's code:
>
>         > list_of_dataset <- do.call(read.table, file_names)
>         Error in do.call(read.table, file_names) : second argument
>         must be a list
>
>         Please advise.
>
>         Ray
>
>         On Sun, Jan 27, 2013 at 10:57 PM, Ivan Calandra
>         <ivan.calandra at u-bourgogne.fr
>         <mailto:ivan.calandra at u-bourgogne.fr>
>         <mailto:ivan.calandra at u-bourgogne.fr
>         <mailto:ivan.calandra at u-bourgogne.fr>>> wrote:
>
>             Hi Ray!
>
>             I'm insisting with list.files...!
>
>             What about like this (untested)?
>             file_names <- list.files(path="C:/.../data", pattern=".dat$",
>             full.names=TRUE)
>             list_of_dataset <- do.call(read.table, file_names)
>
>             Let me know if this helps!
>             Ivan
>
>             -- Ivan CALANDRA Université de Bourgogne UMR CNRS/uB 6282
>             Biogéosciences 6 Boulevard Gabriel 21000 Dijon, FRANCE
>         +33(0)3.80.39.63.06 <tel:%2B33%280%293.80.39.63.06>
>         <tel:%2B33%280%293.80.39.63.06>
>         ivan.calandra at u-bourgogne.fr
>         <mailto:ivan.calandra at u-bourgogne.fr>
>         <mailto:ivan.calandra at u-bourgogne.fr
>         <mailto:ivan.calandra at u-bourgogne.fr>>
>
>         http://biogeosciences.u-bourgogne.fr/calandra
>
>             Le 26/01/13 10:03, Ray Cheung a écrit :
>
>                 Thanks for your commands, Ivan and Michael! However, I
>             am still
>                 not producing the right codes. Would you please help me on
>                 this? I've written the following codes. Please
>             comment. Thank you
>                 very much.
>                 Task: Reading data1.dat to data1000.dat (with missing
>             files) into
>                 R. Missing files can be omitted in the list.
>                 ###FUNCTION TO READ FILES
>                 little_helpful <- function(n) {
>                 file_name <- paste0("C:/.../data", n, ".dat")
>                 read.table(file_name)
>                 }
>                 ###RETURN AN OBJECT WHICH CHECKS FOR THE EXISTENCE OF
>             FILES
>                 check  <- function(n) {
>                 a <- ifelse(file.exists(paste0("C:/.../data", n,
>             ".dat")), 1, 0)
>                 a
>                 }
>                 ###Combining the functions
>                 IMPORT <- function(n) {
>                    L <- check(1:n)
>                    for (i in 1:n) {
>                       if (L[i] == 1)
>                       list_of_datasets <- lapply(i, little_helpful) else
>                 list_of_datasets <- 0
>                       }
>                    list_of_datasets
>                    }
>                 Thanks for all comments.
>                 Best Regards,
>                 Ray
>
>                 On Fri, Jan 25, 2013 at 5:48 PM, Ivan Calandra
>                 <ivan.calandra at u-bourgogne.fr
>             <mailto:ivan.calandra at u-bourgogne.fr>
>                 <mailto:ivan.calandra at u-bourgogne.fr
>             <mailto:ivan.calandra at u-bourgogne.fr>>> wrote:
>
>                     Hi,
>
>                     Not sure this is what you need, but what about
>             list.files()?
>                     It can get you all the files from a given folder,
>             and you
>                     could then work this list with regular expressions
>             for example.
>
>                     HTH,
>                     Ivan
>
>                     --
>                     Ivan CALANDRA
>                     Université de Bourgogne
>                     UMR CNRS/uB 6282 Biogéosciences
>                     6 Boulevard Gabriel
>                     21000 Dijon, FRANCE
>             +33(0)3.80.39.63.06 <tel:%2B33%280%293.80.39.63.06>
>             <tel:%2B33%280%293.80.39.63.06>
>             ivan.calandra at u-bourgogne.fr
>             <mailto:ivan.calandra at u-bourgogne.fr>
>                     <mailto:ivan.calandra at u-bourgogne.fr
>             <mailto:ivan.calandra at u-bourgogne.fr>>
>
>             http://biogeosciences.u-bourgogne.fr/calandra
>
>                     Le 25/01/13 10:00, R. Michael Weylandt a écrit :
>
>                         On Fri, Jan 25, 2013 at 6:11 AM, Ray Cheung
>                         <ray1728 at gmail.com <mailto:ray1728 at gmail.com>
>             <mailto:ray1728 at gmail.com <mailto:ray1728 at gmail.com>>> wrote:
>
>                             Dear Michael,
>
>                             Thanks for your codes. However, lapply
>             does not work
>                             in my case since I've
>                             some files missing in the data (say, the file
>                             data101.dat). Do you have any
>                             suggestions on this?? Thank you very much.
>
>                         You could simply add a test using
>             file.exists() but I'm
>                         not sure what
>                         you want to do with the M matrix then -- omit
>             the slice
>                         (so the others
>                         are all shifted down one) or fill it entirely
>             with NA's.
>
>                         Michael
>
>                         ______________________________________________
>             R-help at r-project.org <mailto:R-help at r-project.org>
>             <mailto:R-help at r-project.org <mailto: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.
>
>
>                     ______________________________________________
>             R-help at r-project.org <mailto:R-help at r-project.org>
>             <mailto:R-help at r-project.org
>             <mailto: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.
>
>
>
>
>



More information about the R-help mailing list