Я пытаюсь «удалить» определенные символы из строк в нескольких строках.
Мне удалось извлечь определенные символы, которые я хочу «удалить» из столбца, но я не могузамените их рекурсивно на "".
Я пробовал некоторые варианты с mapvalues
, gsub
и str_replace
, но мне не повезло
#Example data
test_col<-data.frame(sequence=c("ATGCRYSW\n",
"ATGCRYSW\\n",
"ATGCRYSW\r\n",
"ATGCRYSW\r\nATGCRYSW",
"ATGCRYSW"),
stringsAsFactors = FALSE)
#vector of allowed characters in strings
permitted_seq_chars<-c("A","C","G","T","R","Y","S","W","K",
"M","B","D","H","V","N","+","-","X")
#get all the unique characters in column of interest
all_unique_source_seq_chars<-unique(unlist(strsplit(test_col[["sequence"]],
split ="")))
#subset invalid characters
all_unique_source_seq_invalid_chars<-setdiff(all_unique_source_seq_chars,
permitted_seq_chars )
#'delete' invalid characters one by one. So far the only way I've been able to
# do so, but i would like to not depend on fixed variables if new ones arise
# in the future
str_replace_all(test_col$sequence, c( "\n"= "",
"\\"="",
"n"=""))
естьЛюбой способ сделать это рекурсивно, просто глядя на all_unique_source_seq_invalid_chars
?