[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