[R] what is returned if a match is not found using grep

Rnewbie xuancj at yahoo.com
Tue Aug 11 13:25:17 CEST 2009


Thank you very much!!!


Duncan Murdoch-2 wrote:
> 
> Rnewbie wrote:
>> dear all,
>>
>> I tried to use grep to match IDs in two dataframes
>>
>> grep(DF1$ID[i], DF2$ID)
>>
>> I wanted to use condition in a loop, but I have the problem to define
>> what
>> is in return if a match is not found. I used mode() and class() to
>> compare
>> between the attributes when a match is found and not found, but the mode
>> and
>> class are the same in both cases, numeric and integer, respectively.
>>
>> When a match is not found, grep returns "integer(0)". Is.numeric() and
>> Is.integer() of the return gave TRUE but arithmetic calculation is not
>> possible.
>>   
> See the Value section of the ?grep man page.  By default, R returns a 
> vector of indices of entries in x that match the pattern.  Since you 
> have no matches, you get a vector of length 0.  That is printed as 
> integer(0).  (This is also the function call that would create a vector 
> of length 0.)
> 
> One simple test for no results is  length(grep(...)) == 0.
> 
> Duncan Murdoch
>> For example,
>> If a match is not found for i=12,
>>
>> grep(DF1$ID[12], DF2$ID) returns "integer(0)" and 
>>
>> grep(DF1$ID[12], DF2$ID)+10 returns "numeric(0)"
>>
>> I will appreciate any suggestions. Thanks in advance.
>>
>>
>>
> 
> ______________________________________________
> 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.
> 
> 

-- 
View this message in context: http://www.nabble.com/what-is-returned-if-a-match-is-not-found-using-grep-tp24914127p24915747.html
Sent from the R help mailing list archive at Nabble.com.




More information about the R-help mailing list