Кодирование в сохраненных данных в R (переносимость Windows-Linux) - PullRequest
0 голосов
/ 03 мая 2018

Есть ли способ save R объектов переносимым способом, чтобы кодирование сохранялось при перемещении файла из Windows в Linux или обратно?

Например, предположим, у меня есть этот простой data.frame (созданный в R 3.4.1 с Rstudio 1.0.153 / Windows 10)

# I did this part on a Windows machine
df <- data.frame(Õ = 1:5, Ä = c("õäöü", "baa", "mää", "muu", "näu"))
save(df, file="baa.rda")

Ссылка на файл save на окнах: baa.rda

Чтение этого на машине с Linux (R 3.2.5, RStudio 1.0.136, Linux Mint Debian Edition) приведет к ...

# now on Linux ...
load("baa.rda")
df
#      \xd5             \xc4
# 1    1 \xf5\xe4\xf6\xfc
# 2    2              baa
# 3    3        m\xe4\xe4
# 4    4              muu
# 5    5           n\xe4u

Итак, чтобы преобразовать его обратно в исходную форму, я могу использовать что-то вроде ...

names(df) <- iconv(names(df), from="WINDOWS-1252", to="UTF-8")
# [1] "Õ" "Ä"
df$Ä <- iconv(df$Ä, from="WINDOWS-1252", to="UTF-8")
# df$Ä
# [1] "õäöü" "baa"  "mää"  "muu"  "näu" 

При движении в противоположном направлении (LMDE -> Windows) путаются только имена столбцов, и, опять же, это можно исправить с помощью iconv:

> names(df2)
[1] "Õ" "Ä"
> iconv(names(df2), from="UTF-8", to="WINDOWS-1252")
[1] "Õ" "Ä"

Проблема исчезнет, ​​если я прочитаю данные из текстовых файлов (например, csv) и укажу правильное fileEncoding ..., так что это может быть решением. Или написание функции для iconv всего в одном кадре.

Но есть ли более простой способ сделать это? (То есть сохранить фрейм данных на одной платформе и прочитать его на другой, не беспокоясь о том, как был закодирован текст.)

И связанный с этим вопрос: включена ли информация о (предполагаемом) кодировании при save использовании R-объектов?

1 Ответ

0 голосов
/ 03 мая 2018

Поскольку моей репутации недостаточно, чтобы комментировать ваш вопрос, я публикую ответ прямо.

Хотя я не пользователь Linux, полезно сохранить рабочее пространство в сессии. (нажмите Сессию вверху - сохранить рабочее пространство как ...)

После сохранения файла ***. RData его можно загрузить в следующий раз.

Будут загружены данные, которые вы использовали в предыдущем сеансе.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...