Фон
Я попытался заменить некоторые файлы CSV
на файлы rds
для повышения эффективности. Это промежуточные файлы, которые будут служить в качестве входных данных для других R-скриптов.
Вопрос
Я начал расследование, когда мои скрипты потерпели неудачу, и обнаружил, что readRDS()
и load()
не возвращают идентичные data tables
в качестве оригинала. Это должно произойти? Или я что-то пропустил?
Пример кода
library( data.table )
aDT <- data.table( a=1:10, b=LETTERS[1:10] )
saveRDS( aDT, file = "aDT.rds")
bDT <- readRDS( file = "aDT.rds" )
identical( aDT, bDT, ignore.environment = T ) # Gives 'False'
aDF <- data.frame( a=1:10, b=LETTERS[1:10] )
saveRDS( aDF, file = "aDF.rds")
bDF <- readRDS( file = "aDF.rds" )
identical( aDF, bDF, ignore.environment = T ) # Gives 'True'
# Using 'save'& 'load' doesn't help either
aDT2 <- data.table( a=1:10, b=LETTERS[1:10] )
save( aDT2, file = "aDT2.RData")
bDT2 <- aDT2; rm( aDT2 )
load( file = "aDT2.RData" )
identical( aDT2, bDT2, ignore.environment = T ) # Gives 'False'
Я запускаю R ver 3.2.0 на Linux Mint и тестировал с помощью data.table
версии 1.9.4 и 1.9.5 (последний).
Поиск в SO и google возвратил этот и этот, но я не думаю, что они отвечают на эту проблему, Я все еще пытаюсь понять, почему мои сценарии не удались, когда я переключился на rds
, но я начинаю с этого.
Было бы очень благодарно, если бы могли помочь знающие члены SO. Спасибо!
Edit:
Привет всем, мне удалось найти способ решить проблему - разместили решение ниже. Прошу прощения, если он довольно неэлегантный. Теперь у меня есть еще 2 вопроса:
(1) Есть ли лучший способ?
(2) Можно ли что-то сделать с кодом R
и/или data.table
, чтобы решить эту проблему? Я имею в виду, что эта проблема вызывает непредсказуемые ошибки, и это не первое, что приходит на ум. Мой 2 центов стоит.