Home > Back-end >  regular expressions in R, brms
regular expressions in R, brms

Time:07-25

I would like to extract some names of variable using regular expressions. The names I will extract are "r_Year[2007,KineticEnergy]","r_Year[2008,KineticEnergy]","r_Year[2009,KineticEnergy]","r_Year[2010,KineticEnergy]","r_Year[2011,KineticEnergy]".

I tried to the below code, but the error showed "Error in stopifnot(is.character(explicit), is.character(patterns), is.character(complete_pars)) : attempt to apply non-function"

library(bayesplot)
ma <- mcmc_intervals(
  bmodel,
#  pars = "$r_Year",
  regex_pars = 20(07|08|09|10|11) ",KineticEnergy]", 
  prob = 0.80,
  point_est = "mean",
  prob_outer = 1,
  outer_size = 0.2,
  point_size = 3,
) 

Thanks in advance,

CodePudding user response:

We have to escape the special characters with \\ and use regex for 2007 like \\d{4} e.g matches 4 numbers:

your_string <- c("r_Year[2007,KineticEnergy]",
                 "r_Year[2008,KineticEnergy]",
                 "r_Year[2009,KineticEnergy]",
                 "r_Year[2010,KineticEnergy]",
                 "r_Year[2011,KineticEnergy]")

substring(your_string, regexpr("r_Year\\[\\d{4},KineticEnergy\\]", your_string))

output:

[1] "r_Year[2007,KineticEnergy]"
[2] "r_Year[2008,KineticEnergy]"
[3] "r_Year[2009,KineticEnergy]"
[4] "r_Year[2010,KineticEnergy]"
[5] "r_Year[2011,KineticEnergy]"
  • Related