我尝试用“ oe”替换数据框中的德语特殊字符“ö”。该字符出现在多个列中,因此我希望能够不必指定单个列而一次完成所有操作。这是数据框的一个小例子
data <- data.frame(a=c("aö","ab","ac"),b=c("bö","bb","ab"),c=c("öc","öb","acö"))
Run Code Online (Sandbox Code Playgroud)
我试过了 :
data[data=="ö"]<-"oe"
Run Code Online (Sandbox Code Playgroud)
但这没有用,因为我需要在这里使用正则表达式。但是当我尝试:
data[grepl("ö",data)]<-"oe"
Run Code Online (Sandbox Code Playgroud)
我没有得到我想要的。最后的数据框应如下所示:
> data
a b c
1 aoe boe oec
2 ab bb oeb
3 ac ab acoe
>
Run Code Online (Sandbox Code Playgroud)
该文件是由read.csv导入的csv导入。但是,似乎没有选择更改以使用import语句解决此问题。我如何获得理想的结果?
如果要返回数据框,可以使用:
data.frame(lapply(data, gsub, pattern = "ö", replacement = "oe"))
Run Code Online (Sandbox Code Playgroud)
这是一种实现方法:
data <- apply(data,2,function(x) gsub("ö",'oe',x))
Run Code Online (Sandbox Code Playgroud)
说明:
您grepl无法使用,因为grepl仅返回一个与矩阵中正则表达式匹配的元素相对应的布尔矩阵(TRUE/ FALSE)。然后,赋值操作不仅替换您要替换的字符,还替换整个字符串。要替换字符串的一部分,您需要sub(如果要在每个字符串中仅替换一次)或gsub(如果要替换所有出现的内容)。要将其应用于每个列,请使用循环遍历这些列apply。
| 归档时间: |
|
| 查看次数: |
3498 次 |
| 最近记录: |