Ich versuche, eine Funktion zu schreiben, die einen Vektor verwendet, nach Elementen innerhalb dieses Vektors sucht, die eine bestimmte Zeichenfolge enthalten, und den gesamten Text dieses Elements durch das erste Wort im ursprünglichen Element ersetzt.Wie man Zeichenvektor nach Zeichenkette sucht und wo TRUE das gesamte Element durch einen Teil des ursprünglichen Elements ersetzt?
zum Beispiel, ich habe:
vec <- c("eolimna pala", "achnanthes lata", "navicula spp.", "diploneis spp. 2")
und ich würde bekommen:
vec <- c("eolimna pala", "achnanthes lata", "navicula", "diploneis")
dies ist mehr oder weniger das, was ich habe. jede Hilfe wird sehr geschätzt. EDIT: Es wäre noch hilfreicher, wenn ich als ein Argument einen Zeichenvektor mehrerer Strings bieten könnte, um jedes Element zu überprüfen.
rollToGenus <- function (vec) {
greps <- grepl(" spp. ", as.character(vec))
for (i in 1:length(vec)) {
if (greps[i] == TRUE) {
paste(str_split_fixed(i, " ", n=6)[1])
}
}
}
Warum sind 'a' und' b' in der Ausgabe enthalten? sie haben keine spp. – MichaelChirico
Ich möchte, dass die Ausgabe der ursprüngliche Vektor ist, aber mit Ersetzungen. – bishopia