1) unter Verwendung von gsubfn Es gibt mehrere Probleme hier:
Der reguläre Ausdruck in gsubfn
(und in gsub
) muss mit der Zeichenfolge übereinstimmen, die Sie verarbeiten möchten, aber ein Punkt entspricht nur einem einzelnen Zeichen, sodass er This
oder test
, die 4 Zeichenfolgen entsprechen, nicht übereinstimmen kann. Verwenden Sie stattdessen "\\w+"
.
In list(a = x)
muss die a
eine Konstante sein, keine Variable. Schreiben Sie die Namen explizit aus oder verwenden Sie stattdessen setNames
, wenn sie in Variablen enthalten sind.
So den Code in der Frage zu beheben:
library(gsubfn)
trimws(gsubfn("\\w+", list(This = "", text = ""), Text))
## [1] "is an example [] test"
oder in Bezug auf die Header-Variablen:
L <- setNames(list("", ""), c(topheader, bottomheader))
trimws(gsubfn("\\w+", L, Text))
## [1] "is an example [] test"
Beachten Sie, dass dies jedes Auftreten von topheader ersetzen wird und bottomheader und nicht nur diejenigen am Anfang und am Ende; Dies scheint jedoch Ihrem Code am nächsten zu sein, der wahrscheinlich ausreichend ist.
2) Unter Eine weitere Möglichkeit besteht darin, diese einfache sub
sub("^This (.*) text$", "\\1", Text)
[1] "is an example [] test"
oder in Bezug auf die Header-Variablen:
pat <- sprintf("^%s (.*) %s$", topheader, bottomheader)
sub(pat, "\\1", Text)
## [1] "is an example [] test"
Update: Feste (1)
Was tun Sie möchten entfernen, was möchten Sie behalten? – AkselA
entfernen Sie "diese" und "testen". Halte alles in der Mitte –
Würde 'gsub (" This | test "," ", Text)' ausreichen? Oder 'gsub (" \\ bThis \ b \\ btest \\ b "," ", Text)'? Groß- und Kleinschreibung beachten? – AkselA