Ich versuche, eine Reihe von Zahlen in einer Zeichenfolge durch Informationen zu ersetzen, die von einem Datenframe stammen.ungerades Verhalten beim Ersetzen von Teilen einer Zeichenfolge innerhalb einer for-Schleife
Meine Zeichenfolge stammt aus einer Textdatei, die ich mit dem Readr-Paket wie folgt importiert: read_file("Human.txt")
Ich habe die Klasse überprüft, es ist ein Zeichen. Die Zeichenfolge enthält die folgenden Informationen (ich es treeString benannt haben):
"(1,2,((((3),884),(((((519,((516,517),(515,(518,(513,514))))),((((((((458,(457,(455,456))),459),(502,(454,(453,(451,452)))))"
Meine Datenrahmen (labels.csv) war ursprünglich in Faktor-Format, aber ich änderte das Format der zweiten Spalte zum Charakter der Verwendung folgender Befehl: labels[,2] = as.character(labels[,2])
. Es sieht aus wie dieses
v1 v2
1 1 name1
2 2 name2
3 3 name3
Mein Ziel jede Zahl in der Zeichenfolge mit dem entsprechenden Namen (das heißt V2) in dem Datenrahmen zu ersetzen ist. Dies sollte folgendes Ergebnis:
"(name1,name2,((((name3),884),(((((519,((516,517),(515,(518,(513,514))))),((((((((458,(457,(455,456))),459),(502,(454,(453,(451,452)))))"
Hier ist der Code, den ich dies zu tun bin mit:
for(i in 1:nrow(labels)){
gsub(as.character(i), labels[i,2], treeString)
}
Die seltsame Sache ist, dass, wenn ich laufe die gsub() Befehl auf seinem eigenen (mit bestimmten Nummern - zB 2) tut es die Ersetzung, aber wenn ich es in einer Schleife laufe, ersetzt es nicht die Zahlen.
In Ihrem Code, die Ergebnisse nicht zurück zu TreeString Variable –
Vielen Dank, das hat es gelöst! – Lupy