【发布时间】:2020-01-19 19:02:18
【问题描述】:
我经常使用带有特殊字符(例如 á、ľ、š、č、ť、ž、ý、á、í、é 等)的表格。
我发现名为mgsub 的非常有用的函数可以同时进行多个字符串替换。
我在矢量方面工作得很好,但是我很难将哪个函数应用于整个数据帧。
函数mgsub是这样工作的:
library(mgsub)
mgsub::mgsub("...A čo i tam dušu dáš v tom boji divokom: Mor ty len, a voľ nebyť, ako byť otrokom.",
pattern = c(".","A","č","š","á",":",",","ľ","ť","M"," "),
replacement = c("","a","c","s","a","","","","t","m",""), fixed = TRUE)
[1] "acoitamdusudasvtombojidivokommortylenavonebytakobytotrokom"
但是如何将此功能应用于整个data.frame?例如在这个 data.frame 上...
my.df <- data.frame(v1 = c("...A čo i tam dušu","dáš v tom boji"),
v2 = c("divokom:","Mor ty len,"),
v3 = c("a voľ nebyť,","ako byť otrokom."))
v1 v2 v3
1 ...A čo i tam dušu divokom: a voľ nebyť,
2 dáš v tom boji Mor ty len, ako byť otrokom.
我试图应用 lapply。但它只给出错误...
data.frame(lapply(my.df, mgsub::mgsub,
pattern = c(".","A","č","š","á",":",",","ľ","ť","M"," "),
replacement = c("","a","c","s","a","","","","t","m",""), fixed = TRUE))
Error in nchar(string) : 'nchar()' requires a character vector
欢迎提出任何建议。
【问题讨论】:
-
对于特殊字符,
stringi库中还有一个不错的函数,叫做stri_trans_general()。