R 替换数据帧中的特殊字符

R 替换数据帧中的特殊字符,r,R,我有一个数据帧,它在不同的单元格中包含一个我知道的特殊字符。结构的一个示例: df = data.frame(col_1 = c("21 myspec^ch2 12",NA), col_2 = c("1 myspec^ch2 4","4 myspec^ch2 212")) 字符是thismyspec^ch2,我想用-。预期产出的一个例子: df = data.frame(col_1 = c("21-12",NA), col_2

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

df = data.frame(col_1 = c("21 myspec^ch2 12",NA), 
                col_2 = c("1 myspec^ch2 4","4 myspec^ch2 212"))
字符是this
myspec^ch2
,我想用-。预期产出的一个例子:

df = data.frame(col_1 = c("21-12",NA), 
                col_2 = c("1-4","4-212"))
我尝试过这个,但不起作用:

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

df[df==“myspec^ch2”]要获得
gsub
在整个数据帧上工作,请使用
apply

apply(df, 2, function(x) gsub(" myspec\\^ch2 ", "-", x))

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

库(dplyr)
图书馆(stringr)
固定的_df%
突变所有(funs(str替换所有(,“myspec\\^ch2”,“-”))

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

您可能需要查看
gsub()
@tobiasegli\u这个
gsub(“myspec^ch2”,“-”,df)
,因为它不成功
gsub(“myspec^ch2”,“df”),df$col_1,fixed=T)
。另外,请查找如何索引和操作data.frames的教程,这是一个非常基础的好起点。
应用(df,2,函数(x)gsub(“myspec\\\^ch2”,“-”,x))
@tobiasegli_te谢谢你,我会尝试,但它适用于整个数据帧,不仅适用于一列,还可以使用
fixed=TRUE
而不是转义特殊字符。谢谢。它很有效。只是一个问题,了解2的含义吗?很乐意帮助!
apply
使用
1
迭代行和
apply
>使用
2
在列上迭代。
library(dplyr)
library(stringr)

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