У меня есть функция, которая находится внутри пакета, предположим, что функция называется foo()
.Я хочу, чтобы он читал файл Excel с греческими буквами, поэтому я изменил язык на греческий.После прочтения в файле данных я что-то делаю с этими данными и греческими символами, и после этого я хочу, чтобы языковой стандарт изменился на значение по умолчанию.
foo <- function(file, sheet){
Sys.setlocale(category = "LC_ALL", locale = "Greek")
data <- read.xlsx(file, sheet)
cols_greek <- names(data)[which(apply(data, 2, function(x) grepl("α|β|σ|ε|γ|π|δ|θ|λ|χ|μ|°", x)), arr.ind = TRUE)[,2]]
cols_greek <- cols_greek[!duplicated(cols_greek)]
Sys.setlocale()
return(cols_greek)
}
Выглядит великолепно ... Но это не работает, когдакод находится внутри функции foo
.Столбцы, содержащие греческие символы, возвращаются неправильно.Выполнение кода так же, как это
Sys.setlocale(category = "LC_ALL", locale = "Greek")
data <- read.xlsx("file.xlsx", sheet = "data")
cols_greek <- names(data)[which(apply(data, 2, function(x) grepl("α|β|σ|ε|γ|π|δ|θ|λ|χ|μ|°", x)), arr.ind = TRUE)[,2]]
cols_greek <- cols_greek[!duplicated(cols_greek)]
Sys.setlocale()
cols_greek
, работает отлично, и возвращаются правильные имена столбцов.Может кто-нибудь сказать мне, почему это?
Любая помощь будет принята с благодарностью.