R中的sub()和gsub()函数

时间:2020-02-23 14:43:55  来源:igfitidea点击:

您可以使用R中的sub()和gsub()函数替换向量或者数据框中的字符串或者字符。

R中的sub()和gsub()函数会将字符串替换为特定的字符串。
您甚至可以通过gsub()函数使用正则表达式。

sub()和gsub()的语法

sub()和gsub():这些函数专用于R中的字符串替换操作。
您可以替换向量或者数据帧中的字符串,也可以替换指定的字符串。

sub(pattern, replacement, x)
gsub(pattern, replacement, x)

其中:

  • 模式=您要替换的模式或者字符串。

  • 替换=用于替换模式字符串的输入字符串。

  • X =用于替换字符串的向量或者数据帧。

R中的sub()函数

R中的sub()函数用于将向量或者数据帧中的字符串替换为输入或者指定的字符串。

处理大型数据集时,无法查看每一行来查找和替换目标词或者字符串。

在这种情况下,sub()函数将替换字符串。

但是,sub()函数的缺点是该函数通过保留所有其他相似性来仅替换第一个匹配项。

复杂?不用担心让我们用一个简单的例子来说明这一点。

1. sub()函数的简单实现

在此示例中,我们将在向量中用输入字符串替换字符串。
让我们看看进展如何。

#a input vector 
df<-"R is a collaborative project with many contributors"

#replaces the string 
sub('R','R language',df)

Output = "R language is a collaborative project with many contributors"

在上面的示例中,您可以看到sub()函数将向量中的字符串" R"替换为代码中指定的" R语言"字符串。

让我们去另一个示例以更好地了解它。

#a vector
df<- "The Earth surface is 71% water covered. Earth has 29 % of land"

#using sub function to substitute 
sub('Planetary','Earth',df)

Output = "The Planetary surface is 71% water covered. Earth has 29 % of land"

在此示例中,您可以观察到sub()函数将字符串" Earth"的第一次出现替换为" Planetary"。
但是在下一次出现时,字符串保持不变。

好吧,如上所述,sub()函数不会替换所有字符串,而是仅替换字符串的第一次出现。

希望到目前为止,您已经很清楚了。

2. sub()函数与数据框

当您考虑将sub()函数与数据帧一起使用时,将获得与上述相同的输出。

sub()函数将仅更改第一个出现的位置,而保持其他位置不变。

让我们看看它是如何工作的!

为此,我们必须首先创建一个数据框。
然后,我们可以使用sub()函数来获取结果。

#creating a data frame
df<-data.frame(Column_1 = c('Florida','Germany','Georgia','Geniva','Istanbul','NewZealand','Australia'), Column_2=c(1,2,3,4,5,6,7))

#data frame
df

Column_1     Column_2
1      Florida        1
2      Germany        2
3      Georgia        3
4       Geniva        4
5     Istanbul        5
6   NewZealand        6
7    Australia        7

#replacing the G character with A
sub('G','A',df)

"c(\"Florida\", \"Aermany\", \"Georgia\", \"Geniva\", \"Istanbul\", \"NewZealand\", \"Australia\")"

"c(1, 2, 3, 4, 5, 6, 7)"  

您可以看到该函数将通过保留其他函数来更改第一个匹配项。
请注意,我们在这里选择了整个数据集。

但是,您可以选择特定的列,以将所有用" A"替换为" G"的单词,如下所示。

#substituting the values
sub('G','A',df$Column_1)

"Florida"   
"Aermany"  
"Aeorgia"   
"Aeniva"  
"Istanbul" 
"NewZealand"
"Australia" 

这样,您可以轻松地将值替换为数据框。

在下一节中,我们将看到如何在R中使用gsub()函数。

R中的gsub()函数

R中的gsub()函数用于替换操作。
该函数接受输入并将其替换为指定值。

gsub()函数始终处理正则表达式。
您可以使用正则表达式作为替换参数。

正则表达式只是代表数据中搜索模式的一系列字符。

在以下各节中,您可以见证R中gsub()函数的应用和用法。

1. gsub()函数的简单实现

R中的gsub()函数用于将字符串替换为输入字符串或者值。
请注意,您还可以将正则表达式与gsub()函数一起使用以处理数字。

# A vector 
df<-("I love R. The R is a statistical analysis language")

这是多次写入" R"的数据。
现在,我们将使用gsub()函数在两个句子中用" R编程"替换R。

#substituting the values using gsub()
gsub('R','R programming',df)

"I love R programming. The R programming is a statistical analysis language"

查看两个句子中的" R"一词被" R编程"一词替换的速度。

gsub()函数查找与参数匹配的每个单词,并将其替换为我们输入的单词或者值。

2.带正则表达式的gsub()函数

如标题所示,您可以将正则表达式与gsub()函数配合使用,而不会遇到麻烦。

您可以使用正则表达式取反数据中的数字。

正则表达式(regex):也称为有理表达式,它们是通常定义搜索模式的一系列值或者字符。
搜索算法最常用的方法,是计算机科学领域在语言理论中发展起来的。

让我们看看它是如何工作的。

#vector having numeric values
df<-"I was born on June 5,1998"

#eliminating the numeric values
gsub('[0-9]*','',df)

"I was born on June ,"

因此,基本上,gsub()函数会在数据中搜索数字,并用无空格替换它们,或者您可以全部消除数字。

2.带数据帧的gsub()函数

类似于sub()函数,gsub()用于用输入值替换值。
下面显示了一个有趣的应用程序,它解释了R中gsub()函数的相关性和重要性。

来吧!!!

#creating a dataframe
df<-data.frame(Speaker=c('Abraham','Wassimo','Fredrick','Richard','Ravish','Rubina','Laura'),Age=c(45,47,39,33,36,28,30))
#data frame
df

Speaker    Age
1   Abraham    45
2   Wassimo    47
3  Fredrick    39
4   Richard    33
5    Ravish    36
6    Rubina    28
7     Laura    30

好了,现在我们有了一个发言人列表及其年龄作为输入数据。

现在,我们将使用带有gsub()的正则表达式来将初始空间替换为" Mr/Mrs。
"表达式。
我们一起做吧。

gsub('.*^','Mr/Mrs.',df$Speaker)

"Mr/Mrs.Abraham"  
"Mr/Mrs.Wassimo" 
"Mr/Mrs.Fredrick" 
"Mr/Mrs.Richard" 
"Mr/Mrs.Ravish"  
"Mr/Mrs.Rubina" 
"Mr/Mrs.Laura"