Изменение локали внутри функции пакета - PullRequest
0 голосов
/ 13 ноября 2018

У меня есть функция, которая находится внутри пакета, предположим, что функция называется 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

, работает отлично, и возвращаются правильные имена столбцов.Может кто-нибудь сказать мне, почему это?

Любая помощь будет принята с благодарностью.

...