在 R 中,我尝试编写适用于字符串模式的任何改编的代码。字符串的一个例子是:
string <- "y ~ 1 + a + (b | c) + (d^2) + e + (1 | f) + g"
我只想删除包含“(, |, )”模式的部分,例如:
(b | c) 和 (1 | f)
并留下:
"y ~ 1 + a + (d^2) + e + g"
请注意,字符可能会更改值(例如,“b”可能变为“1”,“c”可能变为“预测器”),并且我希望代码仍然有效。字符串也不需要空格,它也可以是“y~1+a+(b|c)+(d^2)+e+(1|f)+g”或其空格/无空格的任意组合。字符的顺序也可以更改为“y~1+a+(b|c)+e+(1|f)+(d^2)+g”。
我尝试使用基本 R 字符串操作函数(gsub 和 sub)通过使用模式的变体来搜索“(, |, )”模式,例如:
"\\(.*\\|.*\\)"
"\\(.*\\|"
"\\(.+\\|.+\\)"
"\\|.+\\)"
以及许多 stringr 函数来查找此模式并将其替换为空白。但是,同时使用基本 R 和 stringr 时会发生什么,它会删除所有内容,例如:
gsub("\\(.*\\|.*\\)", "", string)
产生:
"y ~ 1 + a + + g"
and
gsub("\\(.*\\|", "", string)
产生:
"y ~ 1 + a + f) + g"
我还尝试使用 str_locate 函数,但在有效使用该函数时遇到了问题,因为有多组括号,并且我只想要带有“|”的实例的位置它们之间。
任何帮助是极大的赞赏。