[英]R function output changes non-english (unicode) characters to nonsense
我正在用R編寫一個函數,該函數根據輸入返回不同的字符串,但是從該函數返回的瑞典語(åäö)似乎亂七八糟。
return_string<-function(x){
z<-switch(x,
1 = c("<br><strong>åäö:</strong>"),
2 = c("<br><strong>öäå:</strong>")
return(z)
}
但是當我嘗試打印時,我得到...
var<-1
z<-return_string(var)
print(z)
[1] "<br><strong>åäö:</strong>"
這很奇怪,因為我將UTF-8作為默認文本編碼,並且可以很好地使用åäö,否則,似乎只有在它們從列表或c()格式的函數返回時才會發生。 如果我檢查Sys.getlocale我得到...
> Sys.getlocale()
[1] "LC_COLLATE=Swedish_Sweden.1252;LC_CTYPE=Swedish_Sweden.1252;
LC_MONETARY=Swedish_Sweden.1252;LC_NUMERIC=C;LC_TIME=Swedish_Sweden.1252"
我的會話信息是...
> sessionInfo()
R version 3.2.2 (2015-08-14)
Platform: x86_64-w64-mingw32/x64 (64-bit)
Running under: Windows 7 x64 (build 7601) Service Pack 1
locale:
[1] LC_COLLATE=Swedish_Sweden.1252 LC_CTYPE=Swedish_Sweden.1252
[3] LC_MONETARY=Swedish_Sweden.1252 LC_NUMERIC=C
[5] LC_TIME=Swedish_Sweden.1252
attached base packages:
[1] stats graphics grDevices utils datasets methods base
other attached packages:
[1] tau_0.0-18 RColorBrewer_1.1-2 htmltools_0.2.6 magrittr_1.5
[5] leaflet_1.0.0 shiny_0.12.2 sp_1.2-1
loaded via a namespace (and not attached):
[1] Rcpp_0.12.2 lattice_0.20-33 digest_0.6.8 mime_0.4
[5] plyr_1.8.3 grid_3.2.2 R6_2.1.1 xtable_1.8-0
[9] jsonlite_0.9.17 scales_0.3.0 tools_3.2.2 htmlwidgets_0.5
[13] munsell_0.4.2 httpuv_1.3.3 yaml_2.1.13 colorspace_1.2-6
嘗試運行您的代碼時出現錯誤。 當類型參數應為character
如您的語法預期), switch
選項的語法是不同的:
ret_str_chr <- function( type) {
switch(type,
'1' = c("<br><strong>åäö:</strong>"),
'2' = c("<br><strong>öäå:</strong>") )
}
ret_str_chr(var)
#[1] "<br><strong>åäö:</strong>"
當type / choice參數為數字時,僅按要建立索引的順序放置要返回的項目:
ret_str_n <- function( choice) {
switch(choice,
c("<br><strong>åäö:</strong>"),
c("<br><strong>öäå:</strong>") )
}
var=1
ret_str_n(var)
#[1] "<br><strong>åäö:</strong>"
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.