かなり特定の正規表現の問題があり、悲しみを引き起こしています。lme
混合モデル ( または のいずれか)から 1 つまたは複数の固定効果lme4
を削除しました。対応するランダム勾配を削除したいと考えています。ただし、ランダム構造によっては、不要な+
シンボルが残ったり、さらに悪いことに、|
.
lme
からおよびlme4
を使用lme.model$call$random
してfindbars(formula(lme4.model))
それぞれ得られた変量効果式のリストを取得します。
random.structures = list(
"~ b | random1",
"(b | random1)",
"~ b + x1 | random1",
"(b + x1 | random1)",
"~ x1 + b| random1",
"(x1 + b| random1)",
"~ b + x1 + c | random1",
"(b+ x1 + c | random1)",
"~b + x1 + x2 | random1",
"(b + x1 + x2 | random1)",
"~ x1 + x2 + b | random1",
"(x1 + x2 + b | random1)"
)
変数を削除し、b
をc
使用して固定効果式から削除しましたdropterms
。それらは固定効果として存在しなくなったので、それらのランダムな勾配は変化することが許されるべきではありません。
b
次の行をc
使用して、上記のランダムな式から削除できます。
random.structures = lapply(random.structures, function(i) gsub("b|c", "", i))
+
ここで、残りのシンボル、つまり変数をリンクしていないシンボルをすべて削除したいと思います。
~
次に、または(
との間に空白がある場合は、|
を挿入したいと思い1
ます。
望ましい出力は
random.structures2 = list(
"~ 1 | random1",
"(1 | random1)",
"~ x1 | random1",
"(x1 | random1)",
"~ x1 | random1",
"(x1 | random1)",
"~ x1 | random1",
"(x1 | random1)",
"~ x1 + x2 | random1",
"(x1 + x2 | random1)",
"~ x1 + x2 | random1",
"(x1 + x2 | random1)"
)
いじりましgsub
たが、うまくいかないようです。たとえば、これは機能します:
gsub("(.*)\\+\\ |(.*)\\+(\\|)", "\\1", random.structures[[3]])
# Accounting for space or lack of space between + and |
しかし、これのためではありません:
gsub("(.*)\\+\\ |(.*)\\+(\\|)", "\\1", random.structures[[7]])
代わりに、ランダム構造のような既存の関数があればdropterms
、私はオールインします!
同様に、またはの間1
の空白スペースにa を確実に挿入することはできません。~ |
( |