字符串不会更改,但masquareding为已更改

时间:2017-10-12 14:25:49

标签: r string

我为争论字符串编写了一个函数。它包括将非英语字符转换为英语字符和其他操作。

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"

如何解决此问题?

1 个答案:

答案 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")