[BioC] Help with loop logic

James W. MacDonald jmacdon at med.umich.edu
Fri Jul 24 17:32:55 CEST 2009


Hi Elliott,

elliott harrison wrote:
> Hi BioC,
> 
>  
> 
> I'm working on a code to create a contrast matrix from the values listed
> against array file in the targets file.
> 
>  
> 
> I can parse unique values from the input file ok but then I want to
> iterate over them to make the comparisons and matrix
> 
>  
> 
> Group1-group2,group1-group3,group2-group3
> 
>  
> 
>  
> 
> I have included my code that I think should get me close (perhaps need
> to strip trailing commas). However using this code the output string is
> empty.
> 
>  
> 
> Can anyone spot what I'm missing?

Yes. Vectorization and the combn() function.

 > grp <- paste("Group", 1:4, sep = "")
 > ind <- t(combn(1:4, 2))
 > paste(grp[ind[,1]], grp[ind[,2]], sep = "-")
[1] "Group1-Group2" "Group1-Group3" "Group1-Group4" "Group2-Group3"
[5] "Group2-Group4" "Group3-Group4"

Best,

Jim



> 
>  
> 
> Thanks
> 
>  
> 
> Elliott
> 
>  
> 
>> sessionInfo()
> 
> R version 2.9.0 (2009-04-17) 
> 
> i386-pc-mingw32 
> 
>  
> 
> locale:
> 
> LC_COLLATE=English_United Kingdom.1252;LC_CTYPE=English_United
> Kingdom.1252;LC_MONETARY=English_United
> Kingdom.1252;LC_NUMERIC=C;LC_TIME=English_United Kingdom.1252
> 
>  
> 
> attached base packages:
> 
> [1] stats     graphics  grDevices utils     datasets  methods   base
> 
> 
>  
> 
> other attached packages:
> 
> [1] limma_2.18.0
> 
>  
> 
> loaded via a namespace (and not attached):
> 
> [1] tools_2.9.0
> 
>  
> 
>  
> 
> A=as.matrix(c("Upper", "Lower", "Middle"))
> 
> string = ""
> 
> nItems <- dim(A)[1]
> 
>           for ( i in 1:nItems ){
> 
>                    for (j in 1:nItems){
> 
>                              tolower(as.character(A[[i]]))
> 
>                              tolower(as.character(A[[j]]))
> 
>                              if (tolower(as.character(A[[i]])) !=
> tolower(as.character(A[[j]]))) {
> 
>                                       if(length(i <-
> grep(paste(as.character(A[[i]]),as.character(A[[j]]), sep = "-")
> ,string)) == 0) {
> 
>                                       
> 
>                                       }
> 
> 
>                                       else {
> 
>  
> paste(as.character(A[[i]]),as.character(A[[j]]), sep = "-") 
> 
>                                                 string
> 
>                                       }
> 
>                                                 if(length(i <-
> grep(paste(as.character(A[[j]]),as.character(A[[i]]), sep = "-")
> ,string)) == 0) {
> 
>                                                           paste(string
> ,paste(as.character(A[[j]]),as.character(A[[i]]), sep = "-"),  sep =
> ",")
> 
>                                                 }
> 
>                                                 else    {
> 
>  
> paste(as.character(A[[j]]),as.character(A[[i]]), sep = "-") 
> 
>                                                           string
> 
>                                                 }
> 
>                              }
> 
>                    }
> 
>           }
> 
>           string
> 
>  
> 
> Mr Elliott Harrison
> 
> Senior Research Associate
> 
> Epistem Ltd
> 48 Grafton Street
> Manchester, M13 9XX. UK
> 
> Office Tel:  +44 (0) 161 606 7398
> Fax:          +44  (0) 161 606 7348
> 
> Incorporated and registered in England and Wales under registration
> number: 03901952.  Registered office: The Incubator Building, Grafton
> Street, Manchester M13 9XX. VAT registration number: 903 0350 77.
> 
> This email and any attachments and files are confidential and are
> intended only for the addressee(s). Any review, onward transmission,
> disclosure or other use of this email or any attachments by any other
> person is prohibited. If you receive this email and are not an intended
> recipient please inform the sender immediately and delete this message,
> removing any copies from your system. Unless expressly stated otherwise,
> any opinions expressed in this email or any attachments transmitted with
> it are personal and do not constitute the opinions of Epistem Holdings
> Plc or any subsidiary company (together "Epistem"). Although emails are
> routinely screened for viruses, Epistem does not accept any liability or
> responsibility for: (i) changes made to this email or any attachments
> transmitted with it after they were sent; or (ii) any viruses
> transmitted through this email or attachments transmitted with it. It is
> the responsibility of the recipient to ensure that the onward
> transmission, opening or use of this email or any files or attachments
> transmitted with it will not adversely affect its systems or data and
> the recipient should carry out such virus checks and other checks that
> it considers appropriate.
> 
> For more information about Epistem please visit: www.epistem.co.uk
> <http://www.epistem.co.uk/>  
> 
> 
> 
> This message has been scanned for viruses by BlackSpider...{{dropped:6}}
> 
> _______________________________________________
> Bioconductor mailing list
> Bioconductor at stat.math.ethz.ch
> https://stat.ethz.ch/mailman/listinfo/bioconductor
> Search the archives: http://news.gmane.org/gmane.science.biology.informatics.conductor

-- 
James W. MacDonald, M.S.
Biostatistician
Douglas Lab
University of Michigan
Department of Human Genetics
5912 Buhl
1241 E. Catherine St.
Ann Arbor MI 48109-5618
734-615-7826



More information about the Bioconductor mailing list