使用正则表达式删除R数据框中的引号

时间:2015-04-18 02:49:15

标签: regex r grep gsub

这是我的数据集(名为g)现在的样子。我在R工作。

Q.35 | Q.36 | age | gender | country 

2 | 2 | 1 | 20 | 2 | AU"       
3 | 5 | 5 | 21 | 1 | AU"       

我想删除国家/地区代码上的引号(AU代替AU")。但是我试过的正则表达方式并没有奏效。

h <- grep("\"", "", g)

h <- grep(""", "", g)

h <- grep('"', '', g)

如何删除这些引号?

修改

有效!我应该一直在使用gsub,而不是grep。

但是gsub搞砸了我的代码,所以我意识到我必须将gsub应用于特定的变量,如下所示:

h$country.f <- gsub("\"", "", h$country.f)

2 个答案:

答案 0 :(得分:3)

grep仅搜索字符向量的每个元素内的匹配项,如果要替换特定模式的第一个匹配项,请使用subgsub替换所有出现的内容

示例

> h <- data.frame(age = c(20,21), country = c('AU"', 'AU"'))
> h$country <- gsub('"', '', h$country)
> h

#   age country
# 1  20      AU
# 2  21      AU

答案 1 :(得分:1)

或者,还有一个很好的包stringr,它提供了一种操作字符串的便捷方法:

df <- data.frame(age = c(20,21), country = c('AU"', 'AU"'))
require(stringr)
df$country <- str_replace_all(string = df$country, pattern = '"', replacement = "")

我喜欢使用它,因为它有非常直接的语法。