相关疑难解决方法(0)

最佳实践:我应该尝试将UTF-8更改为区域设置还是保持原样安全?

我尝试将我的默认编码设置为UTF-8; 到目前为止没有成功:

a <- "Hallo"
b <- "äöfd"
print(Encoding(a))
# [1] "unknown"
print(Encoding(b))
# [1] "latin1"

options(encoding = "UTF-8")
a <- "Hallo"
b <- "äöfd"
print(Encoding(a))
# [1] "unknown"
print(Encoding(b))
# [1] "latin1"

old_locale <- Sys.getlocale()
Sys.setlocale(category = "LC_ALL", locale = "English_United States.1252")
a <- "Hallo"
b <- "äöfd"
print(Encoding(a))
# [1] "unknown"
print(Encoding(b))
# [1] "latin1"

Sys.getlocale()
# [1] "LC_COLLATE=German_Switzerland.1252;
# LC_CTYPE=German_Switzerland.1252;
# LC_MONETARY=German_Switzerland.1252;
# LC_NUMERIC=C;LC_TIME=German_Switzerland.1252"
Run Code Online (Sandbox Code Playgroud)

我发现以下链接R编码文件如何使用Sys.setlocale(),但你可以看到它似乎他们不适用于我的情况,我不明白为什么.

我也试过Sys.setlocale(category = "LC_ALL", locale = "en_US.UTF-8")但得到了 …

windows encoding r utf-8

6
推荐指数
1
解决办法
2741
查看次数

为什么testthat 2.3.2使用了不同的sort()

(这个问题也是在Github上问这里

将 R 升级到 4.0.2 后,测试似乎失败了,因为sortin的算法发生了testthat变化。以下内容显示,这base::sort()browser()是R中4.0.2罚款(见这个问题,为什么增加这个检查。):

y <- c("Schaffhausen", "Schwyz", "Seespital", "SRZ")
print(sort(y))
# [1] "Schaffhausen" "Schwyz"       "Seespital"    "SRZ"
browser()
print(sort(y))
# [1] "Schaffhausen" "Schwyz"       "Seespital"    "SRZ"
Run Code Online (Sandbox Code Playgroud)

但是如果你创建一个包,调用它testsort,使用添加测试环境usethis::use_testthat()并在其中添加一个文件“test-sort.R”/testsort/tests/testthat/

test_that("test sort", {
  xx <- c("Schaffhausen", "Schwyz", "Seespital", "SRZ")
  print("")
  # bowser()
  print(sort(xx))
  expect_equal(sort(xx), c("Schaffhausen", "Schwyz", "Seespital", "SRZ"))
})
Run Code Online (Sandbox Code Playgroud)

你得到

==> devtools::test()

Loading testsort
Testing testsort
v |  OK F W S | Context
/ …
Run Code Online (Sandbox Code Playgroud)

r testthat

6
推荐指数
1
解决办法
198
查看次数

R语言依赖排序

1)如何正确排序?

任务是按照英文字母对美国州名缩写进行排序.但我注意到,R根据某种操作系统语言或区域设置对列表进行排序.例如,在我的语言(立陶宛语)中,甚至拉丁语(非立陶宛语)字母的顺序也与英语字母表中的顺序不同.仅在两个字母表中比较非立陶宛字母的顺序:

"ABCDEFGHI Y JKLMNOPRSTUVZ"

sort(LETTERS)
 [1] "A" "B" "C" "D" "E" "F" "G" "H" "I" "Y" "J" "K" "L" "M" "N"
[16] "O" "P" "Q" "R" "S" "T" "U" "V" "W" "X" "Z"
Run Code Online (Sandbox Code Playgroud)



"ABCDEFGHIJKLMNOPQRSTUVWX Y Z"

LETTERS
 [1] "A" "B" "C" "D" "E" "F" "G" "H" "I" "J" "K" "L" "M" "N" "O"
[16] "P" "Q" "R" "S" "T" "U" "V" "W" "X" "Y" "Z"
Run Code Online (Sandbox Code Playgroud)

因此,状态的排序缩写的顺序也不同(注意最后2个,它们应该是"WV"然后是"WY"):

sort(state.abb)
 [1] "AK" "AL" "AR" "AZ" "CA" "CO" …
Run Code Online (Sandbox Code Playgroud)

sorting r non-english

2
推荐指数
2
解决办法
276
查看次数

标签 统计

r ×3

encoding ×1

non-english ×1

sorting ×1

testthat ×1

utf-8 ×1

windows ×1