在R的brms中使用正则表达式提取变量名报错求助
问题解决
错误原因
你遇到的错误源于两个核心问题:
- 正则表达式未作为字符串传入:
regex_pars参数要求接收字符类型的正则表达式,但你的代码直接写了未加引号的表达式,R 会将其解析为代码而非字符串,触发「尝试应用非函数」的错误。 - 正则语法不符合要求:变量名中的方括号
[]是正则特殊字符,需要转义;同时你的表达式未覆盖变量名的完整前缀r_Year[,匹配逻辑不完整。
修正后的代码
library(bayesplot) ma <- mcmc_intervals( bmodel, regex_pars = "^r_Year\\[20(07|08|09|10|11),KineticEnergy\\]$", prob = 0.80, point_est = "mean", prob_outer = 1, outer_size = 0.2, point_size = 3 )
正则表达式说明
^r_Year\\[:匹配变量名开头的r_Year[(方括号[是正则特殊字符,需用\\转义)。20(07|08|09|10|11):精准匹配 2007-2011 这几个年份。,KineticEnergy\\]$:匹配变量名结尾的,KineticEnergy](同样转义方括号])。^和$确保完全匹配整个变量名,避免误匹配其他相似变量。
简化版正则(可选)
如果想简化年份匹配逻辑,可使用等价的缩写形式:
regex_pars = "^r_Year\\[20(0[7-9]|1[01]),KineticEnergy\\]$"
内容的提问来源于stack exchange,提问作者marie
相关产品推荐
相关产品推荐

