[R] reading data
arun
smartpink111 at yahoo.com
Sun Feb 17 01:16:48 CET 2013
Hi,
Try by putting quotes ie.
res<- do.call("c",...)
A.K.
________________________________
From: Vera Costa <veracosta.rt at gmail.com>
To: arun <smartpink111 at yahoo.com>
Sent: Saturday, February 16, 2013 7:10 PM
Subject: Re: reading data
Thank you.
In mine, I have an error " 'what' must be a character string or a function".
I need to do equivalent in my system.
Thank you and sorry one more time.
No dia 16 de Fev de 2013 23:53, "arun" <smartpink111 at yahoo.com> escreveu:
Hi,
>You didn't mention what the error message or whether you are reading file names which are not "mmmmm11kk.txt".
>
>It is workiing on my system as I run it again.
>?c() combine values into a vector or list.
>
> sessionInfo()
>R version 2.15.1 (2012-06-22)
>Platform: x86_64-pc-linux-gnu (64-bit)
>
>locale:
> [1] LC_CTYPE=en_CA.UTF-8 LC_NUMERIC=C
> [3] LC_TIME=en_CA.UTF-8 LC_COLLATE=en_CA.UTF-8
> [5] LC_MONETARY=en_CA.UTF-8 LC_MESSAGES=en_CA.UTF-8
> [7] LC_PAPER=C LC_NAME=C
> [9] LC_ADDRESS=C LC_TELEPHONE=C
>[11] LC_MEASUREMENT=en_CA.UTF-8 LC_IDENTIFICATION=C
>
>attached base packages:
>[1] stats graphics grDevices utils datasets methods base
>
>other attached packages:
>[1] stringr_0.6.2 reshape2_1.2.2
>
>loaded via a namespace (and not attached):
>[1] plyr_1.8
>
>
>#code
>
>
>res<-do.call(c,lapply(list.files(recursive=T)[grep("mmmmm11kk",list.files(recursive=T))],function(x) {names(x)<-gsub("^(.*)\\/.*","\\1",x); lapply(x,function(y) read.table(y,header=TRUE,stringsAsFactors=FALSE,fill=TRUE))})) #it seems like one of the rows of your file doesn't have 6 elements, so added fill=TRUE
> names(res)<-paste("group_",gsub("\\d+","",names(res)),sep="")
>res2<-split(res,names(res))
>res3<- lapply(res2,function(x) {names(x)<-paste(gsub(".*_","",names(x)),1:length(x),sep="");x})
>#result
>
>res3
>#$group_a
>#$group_a$a1
> Id M mm x b u k j y p v
>1 aAA 1 2 739 0.1257000 2 2 AA 2 8867 8926
>2 aAAAA 1 2 2263 0.0004000 2 2 AR 4 7640 8926
>3 aA 2 1 1 0.0845435 2 AA 2 6790 734,1092 NA
>4 aAA 1 2 1965 0.0007000 4 3 AR 2 11616 8926
>5 aAAA 1 3 3660 0.0008600 18 3 AA 2 20392 496
>6 AA na 2 1972 0.0007000 11 3 AR 25 509 734
>
>$group_a$a2
> Id M mm x b u k j y p v
>1 aAA 1 2 739 0.1257000 2 2 AA 2 8867 8926
>2 aAAAA 1 2 2263 0.0004000 2 2 AR 4 7640 8926
>3 aA 2 1 1 0.0845435 2 AA 2 6790 734,1092 NA
>4 aAA 1 2 1965 0.0007000 4 3 AR 2 11616 8926
>5 aAAA 1 3 3660 0.0008600 18 3 AA 2 20392 496
>6 AA na 2 1972 0.0007000 11 3 AR 25 509 734
>
>$group_a$a3
> Id M mm x b u k j y p v
>1 aAA 1 2 739 0.1257000 2 2 AA 2 8867 8926
>2 aAAAA 1 2 2263 0.0004000 2 2 AR 4 7640 8926
>3 aA 2 1 1 0.0845435 2 AA 2 6790 734,1092 NA
>4 aAA 1 2 1965 0.0007000 4 3 AR 2 11616 8926
>5 aAAA 1 3 3660 0.0008600 18 3 AA 2 20392 496
>6 AA na 2 1972 0.0007000 11 3 AR 25 509 734
>
>
>$group_b
>$group_b$b1
> Id M mm x b u k j y p v
>1 aAA 1 2 739 0.1257000 2 2 AA 2 8867 8926
>2 aAAAA 1 2 2263 0.0004000 2 2 AR 4 7640 8926
>3 aA 2 1 1 0.0845435 2 AA 2 6790 734,1092 NA
>4 aAA 1 2 1965 0.0007000 4 3 AR 2 11616 8926
>5 aAAA 1 3 3660 0.0008600 18 3 AA 2 20392 496
>6 AA na 2 1972 0.0007000 11 3 AR 25 509 734
>
>$group_b$b2
> Id M mm x b u k j y p v
>1 aAA 1 2 739 0.1257000 2 2 AA 2 8867 8926
>2 aAAAA 1 2 2263 0.0004000 2 2 AR 4 7640 8926
>3 aA 2 1 1 0.0845435 2 AA 2 6790 734,1092 NA
>4 aAA 1 2 1965 0.0007000 4 3 AR 2 11616 8926
>5 aAAA 1 3 3660 0.0008600 18 3 AA 2 20392 496
>6 AA na 2 1972 0.0007000 11 3 AR 25 509 734
>
>
>$group_c
>$group_c$c1
> Id M mm x b u k j y p v
>1 aAA 1 2 739 0.1257000 2 2 AA 2 8867 8926
>2 aAAAA 1 2 2263 0.0004000 2 2 AR 4 7640 8926
>3 aA 2 1 1 0.0845435 2 AA 2 6790 734,1092 NA
>4 aAA 1 2 1965 0.0007000 4 3 AR 2 11616 8926
>5 aAAA 1 3 3660 0.0008600 18 3 AA 2 20392 496
>6 AA na 2 1972 0.0007000 11 3 AR 25 509 734
>
>
>A.K.
>
>
>
>________________________________
>From: Vera Costa <veracosta.rt at gmail.com>
>To: arun <smartpink111 at yahoo.com>
>Sent: Saturday, February 16, 2013 6:32 PM
>Subject: Re: reading data
>
>
>Sorry again... In:
>res<-do.call(c,lapply(list.files(recursive=T)[grep("...
>What is this c? In do.call(c, When I put this row im R, I have an error.
>Thank you
>No dia 15 de Fev de 2013 18:11, "arun" <smartpink111 at yahoo.com> escreveu:
>
>Hi,
>>No problem.
>>
>>BTW, these questions are not stupid..
>>Arun
>>
>>
>>
>>
>>
>>
>>
>>________________________________
>>From: Vera Costa <veracosta.rt at gmail.com>
>>To: arun <smartpink111 at yahoo.com>
>>Sent: Friday, February 15, 2013 1:08 PM
>>Subject: Re: reading data
>>
>>
>>Thank you very much.
>>
>>I will try to apply and after I tell you if it is ok :-)
>>
>>Thank you and sorry about this questions (sometimes stupid questions).
>>
>>
>>
>>
>>2013/2/15 arun <smartpink111 at yahoo.com>
>>
>>HI,
>>>No problem.
>>>?c() for concatenate to vector or list().
>>>If I use do.call(cbind,..) or do.call(rbind,...)
>>>
>>>do.call(cbind,lapply(list.files(recursive=T)[grep("mmmmm11kk",list.files(recursive=T))],function(x) {names(x)<-gsub("^(.*)\\/.*","\\1",x); lapply(x,function(y) read.table(y,header=TRUE,stringsAsFactors=FALSE,fill=TRUE))}))
>>># [,1] [,2] [,3] [,4] [,5] [,6]
>>>#a1 List,11 List,11 List,11 List,11 List,11 List,11
>>>
>>>
>>> do.call(rbind,lapply(list.files(recursive=T)[grep("mmmmm11kk",list.files(recursive=T))],function(x) {names(x)<-gsub("^(.*)\\/.*","\\1",x); lapply(x,function(y) read.table(y,header=TRUE,stringsAsFactors=FALSE,fill=TRUE))}))
>>># a1
>>>#[1,] List,11
>>>#[2,] List,11
>>>#[3,] List,11
>>>#[4,] List,11
>>>#[5,] List,11
>>>#[6,] List,11
>>>ie.
>>>list within in a list
>>>
>>> restrial<-lapply(list.files(recursive=T)[grep("mmmmm11kk",list.files(recursive=T))],function(x) {names(x)<-gsub("^(.*)\\/.*","\\1",x); lapply(x,function(y) read.table(y,header=TRUE,stringsAsFactors=FALSE,fill=TRUE))})
>>> str(restrial)
>>>#List of 6
>>># $ :List of 1
>>> #..$ a1:'data.frame': 6 obs. of 11 variables:
>>> .#. ..$ Id: chr [1:6] "aAA" "aAAAA" "aA" "aAA" ...
>>> #.. ..$ M : chr [1:6] "1" "1" "2" "1" ...
>>> #. ..$ mm: int [1:6] 2 2 1 2 3 2
>>> #. ..$ x : int [1:6] 739 2263 1 1965 3660 1972
>>> -----------------------------------------------------------------
>>>str(res)
>>>#List of 6
>>># $ a1:'data.frame': 6 obs. of 11 variables:
>>> # ..$ Id: chr [1:6] "aAA" "aAAAA" "aA" "aAA" ...
>>> #..$ M : chr [1:6] "1" "1" "2" "1" ...
>>> # ..$ mm: int [1:6] 2 2 1 2 3 2
>>> # ..$ x : int [1:6] 739 2263 1 1965 3660 1972
>>>-----------------------------------------------------------------
>>>
>>>You mentioned about naming this to "group_a","group_b". etc..
>>>
>>> names(res)<-paste("group_",gsub("\\d+","",names(res)),sep="")
>>>res2<-split(res,names(res))
>>>
>>>res3<- lapply(res2,function(x) {names(x)<-paste(gsub(".*_","",names(x)),1:length(x),sep="");x})
>>> res3$group_a
>>>$a1
>>>
>>># Id M mm x b u k j y p v
>>>#1 aAA 1 2 739 0.1257000 2 2 AA 2 8867 8926
>>>#2 aAAAA 1 2 2263 0.0004000 2 2 AR 4 7640 8926
>>>#3 aA 2 1 1 0.0845435 2 AA 2 6790 734,1092 NA
>>>#4 aAA 1 2 1965 0.0007000 4 3 AR 2 11616 8926
>>>#5 aAAA 1 3 3660 0.0008600 18 3 AA 2 20392 496
>>>#6 AA na 2 1972 0.0007000 11 3 AR 25 509 734
>>>
>>>#$a2
>>>
>>># Id M mm x b u k j y p v
>>>#1 aAA 1 2 739 0.1257000 2 2 AA 2 8867 8926
>>>#2 aAAAA 1 2 2263 0.0004000 2 2 AR 4 7640 8926
>>>#3 aA 2 1 1 0.0845435 2 AA 2 6790 734,1092 NA
>>>#4 aAA 1 2 1965 0.0007000 4 3 AR 2 11616 8926
>>>#5 aAAA 1 3 3660 0.0008600 18 3 AA 2 20392 496
>>>#6 AA na 2 1972 0.0007000 11 3 AR 25 509 734
>>>
>>>#$a3
>>>
>>> # Id M mm x b u k j y p v
>>>#1 aAA 1 2 739 0.1257000 2 2 AA 2 8867 8926
>>>#2 aAAAA 1 2 2263 0.0004000 2 2 AR 4 7640 8926
>>>#3 aA 2 1 1 0.0845435 2 AA 2 6790 734,1092 NA
>>>#4 aAA 1 2 1965 0.0007000 4 3 AR 2 11616 8926
>>>#5 aAAA 1 3 3660 0.0008600 18 3 AA 2 20392 496
>>>#6 AA na 2 1972 0.0007000 11 3 AR 25 509 734
>>>A.K.
>>>
>>>________________________________
>>>From: Vera Costa <veracosta.rt at gmail.com>
>>>To: arun <smartpink111 at yahoo.com>
>>>Sent: Friday, February 15, 2013 12:39 PM
>>>Subject: Re: reading data
>>>
>>>
>>>
>>>Thank you very much and sorry my questions.
>>>
>>>But this code isn't grouping for letters sure? I mean, a1,a2,a3 is the same group, (the first letter give me the name of the group)
>>>
>>>Another question, in do.call, you did do.call (c,.....) .What is c?
>>>
>>>Sorry
>>>
>>>
>>>
>>>2013/2/15 arun <smartpink111 at yahoo.com>
>>>
>>>HI,
>>>>
>>>>Just to add:
>>>>
>>>>
>>>>res<-do.call(c,lapply(list.files(recursive=T)[grep("mmmmm11kk",list.files(recursive=T))],function(x) {names(x)<-gsub("^(.*)\\/.*","\\1",x); lapply(x,function(y) read.table(y,header=TRUE,stringsAsFactors=FALSE,fill=TRUE))})) #it seems like one of the rows of your file doesn't have 6 elements, so added fill=TRUE
>>>>
>>>> names(res)<-paste("group_",gsub("\\d+","",names(res)),sep="")
>>>>res[grep("group_b",names(res))]
>>>>
>>>>I am not sure how you want the grouped data to look like. If you want something like this:
>>>>res1<-do.call(rbind,res)
>>>>res2<-lapply(split(res1,gsub("[.0-9]","",row.names(res1))),function(x) {row.names(x)<-1:nrow(x);x})
>>>>res2
>>>>#$group_a
>>>>
>>>> # Id M mm x b u k j y p v
>>>>#1 aAA 1 2 739 0.1257000 2 2 AA 2 8867 8926
>>>>#2 aAAAA 1 2 2263 0.0004000 2 2 AR 4 7640 8926
>>>>#3 aA 2 1 1 0.0845435 2 AA 2 6790 734,1092 NA
>>>>#4 aAA 1 2 1965 0.0007000 4 3 AR 2 11616 8926
>>>>#5 aAAA 1 3 3660 0.0008600 18 3 AA 2 20392 496
>>>>#6 AA na 2 1972 0.0007000 11 3 AR 25 509 734
>>>>#7 aAA 1 2 739 0.1257000 2 2 AA 2 8867 8926
>>>>#8 aAAAA 1 2 2263 0.0004000 2 2 AR 4 7640 8926
>>>>#9 aA 2 1 1 0.0845435 2 AA 2 6790 734,1092 NA
>>>>#10 aAA 1 2 1965 0.0007000 4 3 AR 2 11616 8926
>>>>#11 aAAA 1 3 3660 0.0008600 18 3 AA 2 20392 496
>>>>#12 AA na 2 1972 0.0007000 11 3 AR 25 509 734
>>>>#13 aAA 1 2 739 0.1257000 2 2 AA 2 8867 8926
>>>>#14 aAAAA 1 2 2263 0.0004000 2 2 AR 4 7640 8926
>>>>#15 aA 2 1 1 0.0845435 2 AA 2 6790 734,1092 NA
>>>>#16 aAA 1 2 1965 0.0007000 4 3 AR 2 11616 8926
>>>>#17 aAAA 1 3 3660 0.0008600 18 3 AA 2 20392 496
>>>>#18 AA na 2 1972 0.0007000 11 3 AR 25 509 734
>>>>
>>>>
>>>>#$group_b
>>>> # Id M mm x b u k j y p v
>>>>#1 aAA 1 2 739 0.1257000 2 2 AA 2 8867 8926
>>>>#2 aAAAA 1 2 2263 0.0004000 2 2 AR 4 7640 8926
>>>>#3 aA 2 1 1 0.0845435 2 AA 2 6790 734,1092 NA
>>>>#4 aAA 1 2 1965 0.0007000 4 3 AR 2 11616 8926
>>>>#5 aAAA 1 3 3660 0.0008600 18 3 AA 2 20392 496
>>>>#6 AA na 2 1972 0.0007000 11 3 AR 25 509 734
>>>>#7 aAA 1 2 739 0.1257000 2 2 AA 2 8867 8926
>>>>#8 aAAAA 1 2 2263 0.0004000 2 2 AR 4 7640 8926
>>>>#9 aA 2 1 1 0.0845435 2 AA 2 6790 734,1092 NA
>>>>#10 aAA 1 2 1965 0.0007000 4 3 AR 2 11616 8926
>>>>#11 aAAA 1 3 3660 0.0008600 18 3 AA 2 20392 496
>>>>#12 AA na 2 1972 0.0007000 11 3 AR 25 509 734
>>>>
>>>>#$group_c
>>>>
>>>> # Id M mm x b u k j y p v
>>>>#1 aAA 1 2 739 0.1257000 2 2 AA 2 8867 8926
>>>>#2 aAAAA 1 2 2263 0.0004000 2 2 AR 4 7640 8926
>>>>#3 aA 2 1 1 0.0845435 2 AA 2 6790 734,1092 NA
>>>>#4 aAA 1 2 1965 0.0007000 4 3 AR 2 11616 8926
>>>>#5 aAAA 1 3 3660 0.0008600 18 3 AA 2 20392 496
>>>>#6 AA na 2 1972 0.0007000 11 3 AR 25 509 734
>>>>
>>>>
>>>>#or if you want it like this:
>>>>res2<-split(res,names(res))
>>>>
>>>>res2[["group_b"]]
>>>>
>>>>#$group_b
>>>># Id M mm x b u k j y p v
>>>>#1 aAA 1 2 739 0.1257000 2 2 AA 2 8867 8926
>>>>#2 aAAAA 1 2 2263 0.0004000 2 2 AR 4 7640 8926
>>>>#3 aA 2 1 1 0.0845435 2 AA 2 6790 734,1092 NA
>>>>#4 aAA 1 2 1965 0.0007000 4 3 AR 2 11616 8926
>>>>#5 aAAA 1 3 3660 0.0008600 18 3 AA 2 20392 496
>>>>#6 AA na 2 1972 0.0007000 11 3 AR 25 509 734
>>>>
>>>>#$group_b
>>>> # Id M mm x b u k j y p v
>>>>#1 aAA 1 2 739 0.1257000 2 2 AA 2 8867 8926
>>>>#2 aAAAA 1 2 2263 0.0004000 2 2 AR 4 7640 8926
>>>>#3 aA 2 1 1 0.0845435 2 AA 2 6790 734,1092 NA
>>>>#4 aAA 1 2 1965 0.0007000 4 3 AR 2 11616 8926
>>>>#5 aAAA 1 3 3660 0.0008600 18 3 AA 2 20392 496
>>>>#6 AA na 2 1972 0.0007000 11 3 AR 25 509 734
>>>>
>>>>Hope this helps.
>>>>
>>>>A.K.
>>>>
>>>>
>>>>
>>>>----- Original Message -----
>>>>From: "veracosta.rt at gmail.com" <veracosta.rt at gmail.com>
>>>>To: smartpink111 at yahoo.com
>>>>Cc:
>>>>Sent: Friday, February 15, 2013 9:15 AM
>>>>Subject: reading data
>>>>
>>>>Hi,
>>>>I post yesterday and you helped me. I have little problem.
>>>>
>>>>At first, I never worked with regular expressions...
>>>>
>>>>The code that you gave me it's ok, but my files are inside the folders a1,a2,a3. I try to explain better.
>>>>
>>>>I have one folder named "data". Inside this folder I have some other folders named "a1","a2","b1",b2",...and inside of each one of that I have some files. I want only the file "mmmmmm.txt" (in all folders I have One file with this name).
>>>>The name of the folder give me the name of the group,but I need to read the file inside. And after, have "group_a", group_"b"...because I need to work with this data grouped (and know the name of the group).
>>>>
>>>>Thank you.
>>>>
>>>
>>
>
More information about the R-help
mailing list