[R] help with dealing with integer(0) returns from grep used within a conditional loop
Duncan Murdoch
murdoch at stats.uwo.ca
Sun Jul 5 01:43:00 CEST 2009
On 04/07/2009 6:09 PM, Henrique Dallazuanna wrote:
> You cas use isTRUE:
>
> isTRUE(grep("a", "bbbb") > 0)
Not really. If there are multiple hits, that returns FALSE.
You want to use length(grep(...)) to detect any hits.
Duncan Murdoch
>
>
> On Sat, Jul 4, 2009 at 2:56 PM, Mark Kimpel <mwkimpel at gmail.com> wrote:
>
>> I am using grep to locate colnames to automate a report build and have
>> run into a problem when a colname is not found. The use of integer(0)
>> in a conditional statement seems to be a no no as it has length 0.
>> Below is a self-contained trivial example. I would like to get
>> something like "NA" or -1 for the position when it is not found OR
>> learn a way to use integer(0) or some "cast" of it in a logical
>> statement. Example, output, and sessionInfo follow. Thanks, Mark
>>
>> ####################################3
>> vec.1 <- c("a", "b", "c")
>> vec.2 <- c("a", "c", "d")
>> for (i in 1:length(vec.1)){
>> for (j in 1:length(vec.2)){
>> print(paste("i:", i, " j:", j, sep = ""))
>> pos <- grep(vec.1[i], vec.2[j])
>> if (pos > 0){
>> print("pos identified")
>> }
>> else{
>> print("pos not found")
>> }
>> }
>> }
>> ################################
>>
>>> #################################3
>>> vec.1 <- c("a", "b", "c")
>>> vec.2 <- c("a", "c", "d")
>>> for (i in 1:length(vec.1)){
>> + for (j in 1:length(vec.2)){
>> + print(paste("i:", i, " j:", j, sep = ""))
>> + pos <- grep(vec.1[i], vec.2[j])
>> + if (pos > 0){
>> + print("pos identified")
>> + }
>> + else{
>> + print("pos not found")
>> + }
>> + }
>> + }
>> [1] "i:1 j:1"
>> [1] "pos identified"
>> [1] "i:1 j:2"
>> Error in if (pos > 0) { : argument is of length zero
>> No suitable frames for recover()
>>> ###############
>>> sessionInfo()
>> R version 2.9.1 (2009-06-26)
>> x86_64-unknown-linux-gnu
>>
>> locale:
>>
>> LC_CTYPE=en_US.UTF-8;LC_NUMERIC=C;LC_TIME=en_US.UTF-8;LC_COLLATE=en_US.UTF-8;LC_MONETARY=C;LC_MESSAGES=en_US.UTF-8;LC_PAPER=en_US.UTF-8;LC_NAME=C;LC_ADDRESS=C;LC_TELEPHONE=C;LC_MEASUREMENT=en_US.UTF-8;LC_IDENTIFICATION=C
>>
>> attached base packages:
>> [1] tcltk stats graphics grDevices datasets utils methods
>> [8] base
>>
>> other attached packages:
>> [1] sfsmisc_1.0-7 KEGG.db_2.2.11 GO.db_2.2.11
>> [4] rat2302.db_2.2.11 GOstats_2.10.0 RSQLite_0.7-1
>> [7] DBI_0.2-4 graph_1.22.2 Category_2.10.1
>> [10] AnnotationDbi_1.6.1 qvalue_1.18.0 limma_2.18.2
>> [13] affy_1.22.0 Biobase_2.4.1
>>
>> loaded via a namespace (and not attached):
>> [1] affyio_1.12.0 annotate_1.22.0 genefilter_1.24.2
>> [4] GSEABase_1.6.1 preprocessCore_1.6.0 RBGL_1.20.0
>> [7] splines_2.9.1 survival_2.35-4 tools_2.9.1
>> [10] XML_2.5-3 xtable_1.5-5
>> ------------------------------------------------------------
>> Mark W. Kimpel MD ** Neuroinformatics ** Dept. of Psychiatry
>> Indiana University School of Medicine
>>
>> 15032 Hunter Court, Westfield, IN 46074
>>
>> (317) 490-5129 Work, & Mobile & VoiceMail
>>
>> "The real problem is not whether machines think but whether men do."
>> -- B. F. Skinner
>>
>> ______________________________________________
>> 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 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