Sie können aus dem var
eine dynamische regex erstellen und *
s zu erfassen zu entsprechen, die in Ihrem Variablen sind, und legen Sie sie in gsub
mit einem Rückverweis zurück, und entfernen Sie alle anderen Sternchen:
var <- c("a1","a2","a3","a4")
s = "3*a1 + a1*a2 + 4*a3*a4 + a1*a3"
block = paste(var, collapse="|")
pat = paste0("\\b((?:", block, ")\\*)(?=\\b(?:", block, ")\\b)|\\*")
gsub(pat, "\\1", s, perl=T)
## "3a1 + a1*a2 + 4a3*a4 + a1*a3"
Siehe IDEONE demo
H ere ist die regex:
\b((?:a1|a2|a3|a4)\*)(?=\b(?:a1|a2|a3|a4)\b)|\*
Details:
\b
- führende Wortgrenze
((?:a1|a2|a3|a4)\*)
- Gruppe 1 passend
(?:a1|a2|a3|a4)
- entweder eine Ihrer Variablen
\*
- Sternchen
(?=\b(?:a1|a2|a3|a4)\b)
- ein Look-Ahead-Check, dass es eine Ihrer Variablen sein (andernfalls wird keine Übereinstimmung zurückgegeben, die *
mit dem zweiten Zweig des Wechsels angepasst)
|
- oder
\*
- ein "wildes" wörtliches Sternchen, das entfernt werden soll.
'gsub ('(\\ d) \\ * (\\ w)', '\\ 1 \\ 2',‚3 * a + a * b + 4 * c * d + a * c ') vielleicht – alistaire
In deiner "Change' x' zu 'y'", weder 'x' noch' y' sind Objekte in R, so ist es nicht klar, was du bist fragend. – Frank
Warum negative Stimmen? Hast du eine Antwort dafür? Oder einfach nur beleidigend und einstimmig bleiben? – BlueFeet