Ich möchte alle Elemente in einer Zeichenfolge nach einer angegebenen Position ersetzen, die zwischen Zeichenfolgen variiert. Idealerweise würde die Lösung regex
in der Basis R
verwenden.Ersetzen Sie alle Elemente in Zeichenfolge nach einer angegebenen Position
Hier ist ein ausgearbeitetes Beispiel und das gewünschte Ergebnis:
my.last.position <- c(5, 7, 3, NA, 10)
my.data <- read.table(text='
my.string
.1.222.2.2
..1..1..2.
1.1.2.2...
.222.232..
..1..1...1
', header=TRUE, stringsAsFactors = FALSE)
my.data
desired.result <- read.table(text='
my.string
.1.22.....
..1..1....
1.1.......
.222.232..
..1..1...1
', header=TRUE, stringsAsFactors = FALSE)
desired.result
Der Vektor my.last.position
die letzte Position angibt, in jedem Strang zu halten. Die data.frame
desired.result
enthält das gewünschte Ergebnis.
Vielen Dank für jeden Hinweis. Entschuldigung, wenn dies ein Duplikat ist.
Im Gegensatz zu Ihrer anderen Frage, die eine einheitliche 1 zu 1 Beziehung ist, die eine gültige globale globale ersetzen ist, ist dies nicht das Gleiche. Dies erfordert das Zählen und Regex kann nicht zählen. Es ist möglicherweise in einer rekursiven Ersetzung machbar, aber es kann nicht global sein. Zum Beispiel, wo die Regex für jede Zeile konstruiert ist, finde '^ (. {N}. *?) 2' ersetze' $ 1' und benutze es in einer Weile (gsub()). Schleife. – sln