[R] what is returned if a match is not found using grep
murdoch at stats.uwo.ca
Tue Aug 11 13:04:53 CEST 2009
> 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
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.
> For example,
> If a match is not found for i=12,
> grep(DF1$ID, DF2$ID) returns "integer(0)" and
> grep(DF1$ID, DF2$ID)+10 returns "numeric(0)"
> I will appreciate any suggestions. Thanks in advance.
More information about the R-help