簡體   English   中英

如何使r從包含非英語字符的目錄中讀取文件

[英]how to make r read files from directories containing non-English characters

我的桌面上有兩個文件夾,它們包含相同的文件。 看來,包含非英語字符的目錄(路徑)在我當前的Windows環境中不起作用。

> setwd("C:/Users/my_user/Desktop/folder_name_including_only_english_characters")
> list.files()
[1] "test.csv"    "test.jpg"    "test.pdf"    "Test.R"      "test.sql"    "test.xlsx"
> setwd("C:/Users/my_user/Desktop/folder_name_including_non_english_characters_like_ıüö")
> list.files()
character(0)

我不確定這是否與R或Windows 10的設置有關。

我的另一台計算機沒有這樣的問題。

更新

在最近的嘗試中,我注意到,盡管list.files()函數失敗,但是R仍可以使用內置的read.csv2函數從包含非英語字符的目錄中讀取文件。 但是,當我嘗試讀取xlsx文件時,例如:

openxlsx::read.xlsx(paste0("C:/Users/my_user/Desktop/folder_name_including_non_English_characters_like_ıüö","/test.xlsx"))

它給出了下面的錯誤。 (順便說一句,openxlsx :: read.xlsx()函數從僅包含英文字符的目錄中成功讀取文件。

Error in file(con, "r") : invalid 'description' argument
In addition: Warning message:
In unzip(xlsxFile, exdir = xmlDir) : error 1 in extracting from zip file

我懷疑函數list.files()失敗和使用openxlsx :: read.xlsx()函數的錯誤背后的原因可能是相同的。

我的問題是:我應該更改哪些設置以使R成功識別包含非英文字符的目錄?

Sys.glob(*.*)了幾個小時后,當list.files失敗時, Sys.glob(*.*)是唯一可能的選擇。

> Sys.setlocale(locale = 'Turkish_Turkey.1254')
[1] "LC_COLLATE=Turkish_Turkey.1254;LC_CTYPE=Turkish_Turkey.1254;LC_MONETARY=Turkish_Turkey.1254;LC_NUMERIC=C;LC_TIME=Turkish_Turkey.1254"
> setwd('C:/Users/SA31/non_english_characters_like_ıüö')
> list.files()
character(0)
> Sys.glob('*.*')
[1] "New Text Document.txt"

更新了沒有setwd代碼:

> Sys.glob('C:/Users/SA31/non_english_characters_like_ıüö/*')
[1] "C:/Users/SA31/non_english_characters_like_ıüö/New Text Document.txt"
[2] "C:/Users/SA31/non_english_characters_like_ıüö/New folder"

將非unicode程序的系統區域設置更改為土耳其語可以解決此問題。 “所有控制面板項目”>“區域和語言”>“管理員”>“更改系統區域設置”

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM