从字符列中删除表达式的最干净的方法是什么?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了从字符列中删除表达式的最干净的方法是什么?相关的知识,希望对你有一定的参考价值。
所以我有一列(species_names)包含多个名称,并且我用这些行从df中的字符中删除了多个表达式:
df$species_name<-gsub("[0-9]+.+", "", df$species_name)
df$species_name<-gsub("[a-z,A-Z]+[0-9]+.+", "", df$species_name)
df$species_name<-sub("^[A-Z,a-z] ", "", df$species_name)
df$species_name<-gsub("^[A-Z,a-z][A-Z,a-z] ", "", df$species_name)
df$species_name<-gsub(" [A-Z,a-z]$", "", df$species_name)
df$species_name<-gsub(" [A-Z,a-z][A-Z,a-z]$", "", df$species_name)
df$species_name<-gsub("[0-9]+.*", "", df$species_name)
df$species_name<-gsub("[a-z,A-Z]+[0-9]+.*", "", df$species_name)
df$species_name<-gsub("[0-9]+", "", df$species_name)
df$species_name<-gsub(" +$", "", df$species_name)
df$species_name<-gsub("-", "", df$species_name,fixed=TRUE)
df$species_name<-gsub(" sp.", "", df$species_name,fixed=TRUE)
df$species_name<-gsub(" sp. nov", "", df$species_name,fixed=TRUE)
df$species_name<-gsub(" cf.", "", df$species_name,fixed=TRUE)
df$species_name<-gsub(" complex.", "", df$species_name,fixed=TRUE)
df$species_name<-gsub(" cmplx.", "", df$species_name,fixed=TRUE)
df$species_name<-gsub(" cmplx$", "", df$species_name)
df$species_name<-gsub(" pr.", "", df$species_name,fixed=TRUE)
df$species_name<-gsub(" f.", "", df$species_name,fixed=TRUE)
df$species_name<-gsub(" nr.", "", df$species_name,fixed=TRUE)
df$species_name<-gsub(" s.l.", "", df$species_name,fixed = TRUE)
df$species_name<-gsub(" grp.", "", df$species_name,fixed=TRUE)
df$species_name<-gsub(" [A-Z]+.+$", "", df$species_name)
df$species_name<-gsub(" type", "", df$species_name,fixed=TRUE)
df$species_name<-gsub(" group", "", df$species_name,fixed=TRUE)
有什么方法可以使此过程更简洁一些,而不需要太多行?由于此代码位于闪亮的应用程序中的函数内部,因此我想知道是否可以采用另一种更简单的方法。预先感谢您的任何回答
答案
您可以在gsub
中使用Reduce
:
x <- c("abca", "acde")
y <- c("a", "b")
Reduce(function(a,b) gsub(b, "", a) , y, x)
#[1] "c" "cde"
应等于:
x <- gsub("a", "", x)
x <- gsub("b", "", x)
x
#[1] "c" "cde"
以上是关于从字符列中删除表达式的最干净的方法是什么?的主要内容,如果未能解决你的问题,请参考以下文章
从 BigTable 中删除与 BigTable 中的正则表达式匹配的行