R 如何更改h2o数据框列名的接受语言设置

R 如何更改h2o数据框列名的接受语言设置,r,h2o,R,H2o,我用H2O和R来解决二元分类问题。 该数据集有800多个功能,其中一些功能包括非英语名称和字符,例如“ö” 我收到以下错误消息: Error in .verify_dataxy(params$training_frame, x, y): Invalid column names 然后显示包含问题字符的列列表 我已经在谷歌上搜索了一份关于H2O中可接受语言设置的文档 下面是一个示例代码: library(h2o) h2o.init() sodata <- data.frame(Erklär

我用H2O和R来解决二元分类问题。 该数据集有800多个功能,其中一些功能包括非英语名称和字符,例如“ö”

我收到以下错误消息:

Error in .verify_dataxy(params$training_frame, x, y): Invalid column names
然后显示包含问题字符的列列表

我已经在谷歌上搜索了一份关于H2O中可接受语言设置的文档

下面是一个示例代码:

library(h2o)
h2o.init()
sodata <- data.frame(Erklärung = sample(c(0,1), 50, replace = TRUE),
                 isPot = sample(c(0,1), 50, replace = TRUE),
                 target = sample(c(0,1), 50, replace = TRUE))
#
tar <- "target"
pr <- setdiff(colnames(sodata), tar)
sohex <- as.h2o(sodata)
spl <- h2o.splitFrame(data = sohex, ratios = .7, seed = 1)
training <- spl[[1]]
testing <- spl[[2]]
#
gbm1 <- h2o.gbm(x = pr, 
                y = tar, 
                training_frame = training, 
                validation_frame = testing)
#
#h2o.shutdown()
有没有办法改变H2O中的接受语言

编辑:会话和环境信息

sessionInfo()
R version 3.5.1 (2018-07-02)
Platform: x86_64_w64-mingw32/x64 (64-bit)
Running under: Windows 7 x64 (build 7601) Service Pack 1

Matrix products: default

locale:
[1] LC_COLLATE=German_Germany.1252  LC_CTYPE=German_Germany.1252    LC_MONETARY=German_Germany.1252 LC_NUMERIC=C                   
[5] LC_TIME=German_Germany.1252    


Sys.getenv()
之后显示的设置下,没有与语言相关的内容

根据您的更新进行编辑:您看到的“.1252”不是Unicode。看

显示了更改R的区域设置的一些方法。(如果不希望每次都在R中设置默认区域设置,您可能还需要研究设置mingw的默认区域设置的方法。) 我将在下面粘贴我的sessionInfo输出,但我认为在每个输出末尾显示
.UTF-8
的任何内容都可以,例如“de_de.UTF-8”

顺便说一句,一个解决办法是去掉特殊字符,看看有几种方法可以做到这一点。例如

sodata <- ...
...
colnames(sodata) <- iconv(colnames(sodata),to="ASCII//TRANSLIT")
sohex <- as.h2o(sodata)
...
我猜你需要确保你的脚本是UTF-8。也许可以检查运行R会话的区域设置

My sessionInfo()(从命令行在RStudio;R中运行时具有相同的区域设置):


谢谢你的回答。编辑了我的帖子并添加了区域设置。我在运行
h2o.gbm
后立即发现了错误。(或
h2o.grid
)。编码为UTF-8。不幸的是,我处于一个高度规范的环境中,无法编辑/更改.Rprofile或系统设置,因为我缺乏管理权限。Sys.setlocale()不允许我进行更改。Sys.setenv(LANG)可以工作,但不会更改区域设置中的任何内容。如果有任何特定于h2o包的设置允许在列名中使用umlaut,这就是我想要做的。(正常会话,
data.table
data.frame
使用这些列名。)@maop您可以尝试从命令行启动h2o,而不是使用
h2o.init()
。或者,如果在
Sys.setenv()
调用之后调用
h2o.init()
,它是否工作?但我也会尝试说服您的系统管理员接受UTF8/Unicode,并从20世纪的编码开始:-)说服系统管理员是一个好建议:)在确保调用setenv()后,我尝试初始化h2o。我有点放弃了,使用
setnames()
更改了列名,并指定了如下新名称:
paste0(“v”,seq(1,长度(预测值),1))
sodata <- ...
...
colnames(sodata) <- iconv(colnames(sodata),to="ASCII//TRANSLIT")
sohex <- as.h2o(sodata)
...
   variable relative_importance scaled_importance percentage
1     isPot            0.676265          1.000000   0.708690
2 Erklärung            0.277981          0.411054   0.291310
> sessionInfo()
R version 3.4.4 (2018-03-15)
Platform: x86_64-pc-linux-gnu (64-bit)
Running under: Linux Mint 19.1

Matrix products: default
BLAS: /usr/lib/x86_64-linux-gnu/blas/libblas.so.3.7.1
LAPACK: /usr/lib/x86_64-linux-gnu/lapack/liblapack.so.3.7.1

locale:
 [1] LC_CTYPE=en_GB.UTF-8       LC_NUMERIC=C               LC_TIME=en_GB.UTF-8        LC_COLLATE=en_GB.UTF-8     LC_MONETARY=en_GB.UTF-8   
 [6] LC_MESSAGES=en_GB.UTF-8    LC_PAPER=en_GB.UTF-8       LC_NAME=C                  LC_ADDRESS=C               LC_TELEPHONE=C            
[11] LC_MEASUREMENT=en_GB.UTF-8 LC_IDENTIFICATION=C       

attached base packages:
[1] stats     graphics  grDevices utils     datasets  methods   base     

loaded via a namespace (and not attached):
[1] compiler_3.4.4 tools_3.4.4