相关疑难解决方法(0)

将语言环境设置为系统默认UTF-8

在rApache中运行R时,语言环境是从Apache Web服务器继承的,因此Sys.getlocale()始终等于"C".我想使用我的Web应用程序UTF8,所以我使用:

Sys.setlocale("LC_ALL", 'en_US.UTF-8')
Run Code Online (Sandbox Code Playgroud)

但是,这不适用于没有此区域设置的计算机:

1: Setting LC_CTYPE failed, using "C" 
2: Setting LC_COLLATE failed, using "C" 
3: Setting LC_TIME failed, using "C" 
4: Setting LC_MESSAGES failed, using "C" 
5: Setting LC_MONETARY failed, using “C”
Run Code Online (Sandbox Code Playgroud)

有没有办法Sys.setlocale将语言环境设置为系统默认值UTF-8?即在Windows或德语Linux上也可以使用的东西?

locale r utf-8 rapache

24
推荐指数
1
解决办法
4万
查看次数

使用RPostgreSQL的UTF-8/Unicode文本编码

我在Windows机器上运行R,它直接链接到PostgreSQL数据库.我没有使用RODBC.我的数据库以UTF-8编码,由以下R命令确认:

dbGetQuery(con, "SHOW CLIENT_ENCODING")
#   client_encoding
# 1            UTF8
Run Code Online (Sandbox Code Playgroud)

但是,当一些文本被读入R时,它在R中显示为奇怪的文本.

例如,我的PostgreSQL数据库中显示以下文本:"Stéphane"

出口至R之后它表现为:"STA©PHANE"(该é被编码为é)

导入RI时,使用dbConnect命令建立连接,dbGetQuery使用SQL查询数据的命令.连接到数据库或运行查询时,我没有在任何地方指定任何文本编码.

我在网上搜索过,找不到直接解决我的问题的方法.我找到了这个链接,但他们的问题是RODBC,我没有使用.

此链接有助于识别符号,但我不只是想在R ...中查找和替换太多数据.

我确实尝试在下面运行以下命令,然后发出警告.

Sys.setlocale("LC_ALL", "en_US.UTF-8")
# [1] ""
# Warning message:
# In Sys.setlocale("LC_ALL", "en_US.UTF-8") :
#   OS reports request to set locale to "en_US.UTF-8" cannot be honored
Sys.setenv(LANG="en_US.UTF-8")
Sys.setenv(LC_CTYPE="UTF-8")
Run Code Online (Sandbox Code Playgroud)

警告发生在Sys.setlocale("LC_ALL", "en_US.UTF-8")命令上.我的直觉是这是Windows特定的问题,并且在Mac/Linux/Unix中不会发生.

postgresql encoding r utf-8 rpostgresql

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

从 3.5.2 升级到 4.0.0 后,为什么 R 的排序更改了使用 load() 导入的数据?

精简版。Iload()数据在一个包中。以前,一个包中的测试通过了,现在它失败了,因为输出sort改变了。这是一个最小的可重现示例 - 有关详细信息,请参见下文:

y <- c("Schaffhausen", "Schwyz", "Seespital", "SRZ")
sort(y)
# OLD 3.5.2 [1] "Schaffhausen" "Schwyz"       "Seespital"    "SRZ"        
# NEW 4.0.0 [1] "SRZ"          "Schaffhausen" "Schwyz"       "Seespital" 
# Update 4.0.2 see comment:
# [1] "Schaffhausen" "Schwyz"       "Seespital"    "SRZ"     

# From jay.sf's comment
sort.int(y, method="radix")
# [1] "SRZ"          "Schaffhausen" "Schwyz"       "Seespital"  
sort.int(y, method="shell")
# [1] "Schaffhausen" "Schwyz"       "Seespital"    "SRZ"  

# From Henrik's comment:
data.table::fsort(y)
# [1] "SRZ"          "Schaffhausen" "Schwyz"       "Seespital"  
Run Code Online (Sandbox Code Playgroud)

我发现的唯一相关报告变化是

R 4.0.0
新特性的变化
......
当通过 read.table() 加载数据集时,data() …

sorting r

10
推荐指数
1
解决办法
193
查看次数

为什么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
查看次数

如何在 RStudio 中检测非 UTF-8 编码

我有一个像

a <- 1
# A very long comment, perhaps copy paste from somewhere containing the word ?t.
Run Code Online (Sandbox Code Playgroud)

我想搜索非 UTF-8 编码。我怎样才能在 RStudio 中做到这一点?

rstudio

5
推荐指数
1
解决办法
1925
查看次数

R 中的字符编码

我正在尝试读取csv由 Sql Server Management Studio 生成的文件,并UTF-8 通过. 我无法让 R 正确显示特殊字符。Rread.csv2()

\n

如果我将fileEncoding="UTF-8-BOM"导入停止在有 \xc3\xbf 的行。但是,打开 \xc3\xbf 中的文件时,Notepad++可以使用编码正确显示UTF-8。我尝试过不进行设置fileEncoding,但是特殊字符无法正确显示(当然)。

\n

csv 文件可在此处获取:\n https://www.dropbox.com/s/7y47i826ikq8ahi/Data.csv

\n

如何读取 csv 文件并以正确的编码显示文本?

\n

谢谢!!

\n

r character-encoding

4
推荐指数
1
解决办法
2万
查看次数