替换数据框中的特殊字符

时间:2017-11-14 21:07:58

标签: r

我有一个数据框,在不同的单元格中包含一个我知道的特殊字符。结构的一个例子:

df = data.frame(col_1 = c("21 myspec^ch2 12",NA), 
                col_2 = c("1 myspec^ch2 4","4 myspec^ch2 212"))

角色是这个myspec^ch2,我想用 - 替换。预期输出的一个例子:

df = data.frame(col_1 = c("21-12",NA), 
                col_2 = c("1-4","4-212"))

我尝试了这个但是没有用:

df [ df == " myspec^ch2 " ] <- "-"

2 个答案:

答案 0 :(得分:2)

要让gsub使用apply

来处理整个数据框
apply(df, 2, function(x) gsub(" myspec\\^ch2 ", "-", x))

答案 1 :(得分:1)

你真的想在这里做一个正则表达式的替换。但是,在正则表达式中,^被视为行的开头(而不是字面插入符号)。所以你可以这样做(使用stringr包):

library(dplyr)
library(stringr)

fixed_df  <- df %>%
    mutate_all(funs(str_replace_all( . , " myspec\\^ch2 ", "-"))

请注意插入符号前面的双反斜杠 - 它会脱离插入符并告诉R按字面解释它,而不是作为行的开头。