我为争论字符串编写了一个函数。它包括将非英语字符转换为英语字符和其他操作。
trim <- function (x) gsub("^\\s+|\\s+$", "", x)
library(qdapRegex)
wrangle_string <- function(s) {
# 1 character substitutions
old1 <- "šžþàáâãäåçèéêëìíîïðñòóôõöùúûüýşğçıöüŞĞÇİÖÜ"
new1 <- "szyaaaaaaceeeeiiiidnooooouuuuysgciouSGCIOU"
s1 <- chartr(old1, new1, s)
# 2 character substitutions
old2 <- c("œ", "ß", "æ", "ø")
new2 <- c("oe", "ss", "ae", "oe")
s2 <- s1
for(i in seq_along(old2)) s2 <- gsub(old2[i], new2[i], s2, fixed = TRUE)
s2
#diger donusumlar
s2= gsub('[[:punct:] ]+',' ',s2)
s2=tolower(s2)
s2=trim(s2)
s2=rm_white(s2)
return(s2)
}
这是我复制的最小数据:
outgoing=structure(list(source = structure(c(1L, 1L, 1L), .Label = "YÖNETIM KURULU BASKANLIGI", class = "factor"),
target = structure(c(2L, 1L, 3L), .Label = c("x Yayincilik Reklam ve Organizasyon Hizmetleri",
"Suat", "Yavuz"), class = "factor")), .Names = c("source",
"target"), row.names = c(NA, 3L), class = "data.frame")
事情就是当我直接调用它时它起作用了。
wrangle_string("YÖNETİM KURULU BAŞKANLIĞI")
结果是:
"yonetim kurulu baskanligi"
当我在数据框上使用apply
函数时,当我使用View(outgoing)
函数检查时它看起来像是有效的,没有问题。
outgoing$source=as.vector(sapply(outgoing$source,wrangle_string))
然而,当我用outgoing[1,1]
检查单元格时,我得到了这个:
"yonetİm kurulu başkanliği"
如何解决此问题?
答案 0 :(得分:0)
在MrFlick的帮助和指导下,我找到了答案。问题源于本地语言设置。 R是英语,但我的数据包括土耳其语字符。为了解决这个问题,我执行了这个命令:
var s = "123";
var a = 123;
if(a == s) {//=== compares types == only values
//true
} else {
//false
}
我还将正确的编码参数添加到我的导入csv函数中,如下所示:
Sys.setlocale("LC_CTYPE", "turkish")