从字符列中删除表达式的最干净的方法是什么?

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"

以上是关于从字符列中删除表达式的最干净的方法是什么?的主要内容,如果未能解决你的问题,请参考以下文章

XSS:如何从 C# 中的字符串中删除 JS 片段?

从 BigTable 中删除与 BigTable 中的正则表达式匹配的行

在 C++ 中将 const char * 与字符串连接的最干净的方法是啥?

从字符串 PySpark 数据框列中删除正则表达式

从excel中的字符串中删除单词的最简单方法是啥?

将 formGroup 传递给 mat-step 的最干净的方法是啥?