R中的字符串处理(查找和替换)

时间:2014-11-19 08:29:01

标签: r string

这是我的data.frame

的示例
no string
1  abc&URL_drf
2  abcdef&URL_efg

我需要将*&URL替换为""。所以,我需要一个结果

no string
1 _drf
2 _efg

如果是Excel,我可以使用'*&URL'在'查找和替换'中轻松制作此结果。功能。 但是,我无法在R中寻找有效的方法。

在R中,我的方法如下。

首先,我使用strsplit(df$string, "&URL")分割字符串然后选择了第二列。我认为这不是一种有效的方式。

有没有有效的方法?

3 个答案:

答案 0 :(得分:3)

# data
df <- read.table(text="no string
1  abc&URL_drf
2  abcdef&URL_efg", header=T, as.is=T)

# `gsub` function is to substitute the unwanted string with nothing, 
# thus the `""`. The pattern of unwanted string was written in 
# regular expressions.

df$string <- gsub("[a-z]+(&URL)", "", df$string)
# you get
  no string
1  1   _drf
2  2   _efg

答案 1 :(得分:0)

我建议你使用grep功能。

grep函数将正则表达式作为第一个参数,输入向量作为第二个参数。如果传递value = TRUE,则grep返回一个向量,其中包含输入向量中实际元素的副本(可以是匹配。

所以在你的情况下

grep("[a-z]+(&URL)", df$col, perl=TRUE, value=TRUE)

答案 2 :(得分:0)

另一种方法:

df <- transform(df, string = sub(".*&URL", "", string))

#  no string
# 1  1   _drf
# 2  2   _efg