Удалить все символы, кроме определенной строки в R - PullRequest
2 голосов
/ 25 сентября 2019

Я пытаюсь удалить все символы, кроме списка определенных строк, которые я указал в столбце в R.

Мои данные:

oldlist <- c("ljwefhwordlsfk", "kjrghewletterweifj", "esjnumbersf", "ggkjherletter", "slrgjwordoggr")

Мой ожидаемый результат:

desiredlist <- c("word", "letter", "number", "letter", "word")

То, что я пробовал, но не получится:

helpvector <- c("word", "letter", "number")

neuenummer <- gsub(paste0("[^", paste(helpvector, collapse=""), "]+"), "", oldlist)

Ответы [ 2 ]

4 голосов
/ 25 сентября 2019

Мы можем использовать str_extract с stringr

library(stringr)
str_extract_all(oldlist, str_c(helpvector, collapse="|"), simplify = TRUE)[,1]
#[1] "word"   "letter" "number" "letter" "word"  

Или с gregexpr/regmatches с base R

unlist(regmatches(oldlist, gregexpr(paste0(helpvector, collapse="|"), oldlist)))
#[1] "word"   "letter" "number" "letter" "word"  
2 голосов
/ 25 сентября 2019
library(stringi)
library(dplyr)
stri_extract_all_regex(oldlist, '(word|letter|number)') %>% unlist()
[1] "word"   "letter" "number" "letter" "word"  
...