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.calan...@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.calan...@u-bourgogne.fr <mailto:ivan.calan...@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.calan...@u-bourgogne.fr <mailto:ivan.calan...@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.calan...@u-bourgogne.fr
        <mailto:ivan.calan...@u-bourgogne.fr>
        <mailto:ivan.calan...@u-bourgogne.fr
        <mailto:ivan.calan...@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.calan...@u-bourgogne.fr
        <mailto:ivan.calan...@u-bourgogne.fr>
        <mailto:ivan.calan...@u-bourgogne.fr
        <mailto:ivan.calan...@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.calan...@u-bourgogne.fr
            <mailto:ivan.calan...@u-bourgogne.fr>
                <mailto:ivan.calan...@u-bourgogne.fr
            <mailto:ivan.calan...@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.calan...@u-bourgogne.fr
            <mailto:ivan.calan...@u-bourgogne.fr>
                    <mailto:ivan.calan...@u-bourgogne.fr
            <mailto:ivan.calan...@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
                        <ray1...@gmail.com <mailto:ray1...@gmail.com>
            <mailto:ray1...@gmail.com <mailto:ray1...@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@r-project.org <mailto:R-help@r-project.org>
            <mailto:R-help@r-project.org <mailto: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.


                    ______________________________________________
            R-help@r-project.org <mailto:R-help@r-project.org>
            <mailto:R-help@r-project.org
            <mailto: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.






______________________________________________
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.

Reply via email to