Thanks for the additional response, Bill. I did not want to bog down
the question with the full context of the function. Briefly, given a
set of nested and non-nested regression models, I want to compare AIC
(bigger model - smaller model) and do an LRT for all the nested models
that differ by a single predictor. All models, nested or not, would
also have an AIC value (I am aware of the critiques of mixing p-value
hypothesis testing and information criteria). So, not quite
MuMIn::dredge. The tricky part, for me, has been doing the comparisons
for only the nested models in a set that contains nested and
non-nested. I made some progress with the function, so I'll refrain
from bugging the list with the whole thing unless (when) I'm stuck
again.

For those interested in the motivation, I'm running with the idea of
trying to flag uninformative parameters which "steal" AIC model
weight, and potentially result in a misleading model set, depending
how the reader interprets the set.
Arnold, T. W. 2010. Uninformative parameters and model selection using
Akaike’s information criterion. Journal of Wildlife Management
74:1175–1178.
Murtaugh, P. 2014. In defense of P values. Ecology 95:611–617.

Joe

On Wed, Mar 22, 2017 at 9:11 AM, William Dunlap <wdun...@tibco.com> wrote:
> You did not describe the goal of your pattern matching.  Were you trying
> to match any string that could be interpreted as an R expression containing
> X1 and X3 as additive terms?   If so, you could turn the string into a 
> one-sided
> formula and use the terms() function.  E.g.,
>
> f <- function(string) {
>     fmla <- as.formula(paste("~", string))
>     term.labels <- attr(terms(fmla), "term.labels")
>     all(c("X1","X3") %in% term.labels)
> }
>
>> f("X3 + X2 + X1")
> [1] TRUE
>> f("- X3 + X2 + X1")
> [1] FALSE
>> f("X3 + X2 + log(X1)")
> [1] FALSE
>> f("X3 + X2 + log(X1) + X1")
> [1] TRUE
> Bill Dunlap
> TIBCO Software
> wdunlap tibco.com
>
>
> On Wed, Mar 22, 2017 at 6:39 AM, Joe Ceradini <joecerad...@gmail.com> wrote:
>> Wow. Thanks to everyone (Jim, Ng Bo Lin, Bert, David, and Ulrik) for
>> all the quick and helpful responses. They have given me a better
>> understanding of regular expressions, and certainly answered my
>> question.
>>
>> Joe
>>
>> On Wed, Mar 22, 2017 at 12:22 AM, Ulrik Stervbo <ulrik.ster...@gmail.com> 
>> wrote:
>>> Hi Joe,
>>>
>>> you could also rethink your pattern:
>>>
>>> grep("x1 \\+ x2", test, value = TRUE)
>>>
>>> grep("x1 \\+ x", test, value = TRUE)
>>>
>>> grep("x1 \\+ x[0-9]", test, value = TRUE)
>>>
>>> HTH
>>> Ulrik
>>>
>>> On Wed, 22 Mar 2017 at 02:10 Jim Lemon <drjimle...@gmail.com> wrote:
>>>>
>>>> Hi Joe,
>>>> This may help you:
>>>>
>>>> test <- c("x1", "x2", "x3", "x1 + x2 + x3")
>>>> multigrep<-function(x1,x2) {
>>>>  xbits<-unlist(strsplit(x1," "))
>>>>  nbits<-length(xbits)
>>>>  xans<-rep(FALSE,nbits)
>>>>  for(i in 1:nbits) if(length(grep(xbits[i],x2))) xans[i]<-TRUE
>>>>  return(all(xans))
>>>> }
>>>> multigrep("x1 + x3","x1 + x2 + x3")
>>>> [1] TRUE
>>>> multigrep("x1 + x4","x1 + x2 + x3")
>>>> [1] FALSE
>>>>
>>>> Jim
>>>>
>>>> On Wed, Mar 22, 2017 at 10:50 AM, Joe Ceradini <joecerad...@gmail.com>
>>>> wrote:
>>>> > Hi Folks,
>>>> >
>>>> > Is there a way to find "x1 + x2 + x3" given "x1 + x3" as the pattern?
>>>> > Or is that a ridiculous question, since I'm trying to find something
>>>> > based on a pattern that doesn't exist?
>>>> >
>>>> > test <- c("x1", "x2", "x3", "x1 + x2 + x3")
>>>> > test
>>>> > [1] "x1"           "x2"           "x3"           "x1 + x2 + x3"
>>>> >
>>>> > grep("x1 + x2", test, fixed=TRUE, value = TRUE)
>>>> > [1] "x1 + x2 + x3"
>>>> >
>>>> >
>>>> > But what if only have "x1 + x3" as the pattern and still want to
>>>> > return "x1 + x2 + x3"?
>>>> >
>>>> > grep("x1 + x3", test, fixed=TRUE, value = TRUE)
>>>> > character(0)
>>>> >
>>>> > I'm sure this looks like an odd question. I'm trying to build a
>>>> > function and stuck on this. Rather than dropping the whole function on
>>>> > the list, I thought I'd try one piece I needed help with...although I
>>>> > suspect that this question itself probably does bode well for my
>>>> > function :)
>>>> >
>>>> > Thanks!
>>>> > Joe
>>>> >
>>>> > ______________________________________________
>>>> > R-help@r-project.org mailing list -- To UNSUBSCRIBE and more, see
>>>> > 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@r-project.org mailing list -- To UNSUBSCRIBE and more, see
>>>> 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.
>>
>>
>>
>> --
>> Cooperative Fish and Wildlife Research Unit
>> Zoology and Physiology Dept.
>> University of Wyoming
>> joecerad...@gmail.com / 914.707.8506
>> wyocoopunit.org
>>
>> ______________________________________________
>> R-help@r-project.org mailing list -- To UNSUBSCRIBE and more, see
>> 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.



-- 
Cooperative Fish and Wildlife Research Unit
Zoology and Physiology Dept.
University of Wyoming
joecerad...@gmail.com / 914.707.8506
wyocoopunit.org

______________________________________________
R-help@r-project.org mailing list -- To UNSUBSCRIBE and more, see
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.

Reply via email to