更改软件包内部语言环境

时间:2018-11-13 15:24:14

标签: r function locale

我有一个驻留在包中的函数,假设该函数称为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

可以正常工作,并返回正确的列名称。谁能告诉我为什么呢?

任何帮助将不胜感激。

0 个答案:

没有答案