1queryOne <- function(x, 2 pattern, 3 fuzzy=TRUE, 4 perl=TRUE, 5 fixed=TRUE, 6 ignore.case=TRUE, 7 insertions=0.999999999, 8 deletions=0, 9 substitutions=0 10 ){ 11 max.distance <- list(insertions=insertions,deletions=deletions,substitutions=substitutions) 12 found <- if(fuzzy) 13 agrep(pattern,x, 14 ignore.case=ignore.case, 15 max.distance=max.distance) 16 else 17 suppressWarnings(grep(pattern,x, 18 perl=perl, 19 fixed=fixed, 20 ignore.case=ignore.case)) 21 if(length(found)) x else NULL 22} 23 24queryList <- function(x, 25 pattern, 26 fuzzy=TRUE, 27 perl=TRUE, 28 fixed=TRUE, 29 ignore.case=TRUE, 30 insertions=0.999999999, 31 deletions=0, 32 substitutions=0 33 ){ 34 res <- lapply(x,query, 35 pattern=pattern, 36 fuzzy=fuzzy, 37 perl=perl, 38 fixed=fixed, 39 ignore.case=ignore.case, 40 insertions=insertions, 41 deletions=deletions, 42 substitutions=substitutions 43 ) 44 res <- res[sapply(res,length)>0] 45 if(length(res)) res else NULL 46} 47 48 49setMethod("query","data.set",function(x,pattern,...)queryList(x,pattern,...)) 50setMethod("query","importer",function(x,pattern,...)queryList(x,pattern,...)) 51 52setMethod("query","item",function(x,pattern,...){ 53 annot <- queryOne(annotation(x),pattern,...) 54 labs <- queryOne(labels(x),pattern,...) 55 if(length(annot) && length(labs)) list(annotation=annot, labels=labs) 56 else if (length(annot)) annot 57 else if (length(labs)) labs 58 else NULL 59}) 60 61