我有一个数据框,在不同的单元格中包含一个我知道的特殊字符。结构的一个例子:
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 " ] <- "-"
答案 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按字面解释它,而不是作为行的开头。