Как сохранить и загрузить вывод seqefsub() в TraMineR
У меня длинный набор данных, в котором я хочу поэкспериментировать с различными настройками для функции seqefsub(), и в зависимости от настройки один запуск может занять относительно много времени. Поэтому я хочу, чтобы компьютер вычислил все различные вариации, а затем оценил результаты, и т.д. использовать их для дальнейшей обработки.
Моя проблема заключается в том, что, когда я сохраняю результаты в файле и загружаю их, структура данных выглядит нарушенной. В результате я не могу использовать функции TraMineR для этих данных после загрузки, поэтому мне нужно воспроизводить все вычисления каждый раз после закрытия R.
Сохранение в рабочую область с RStudio (.RData) дает ту же ошибку. Сохранение в двоичном формате дает ту же ошибку.
Вот так выглядит список последовательностей в RStudio перед сохранением:
И после загрузки:
Это код, который я использовал для этого примера:
library(TraMineR)
data(actcal.tse)
seqe <- seqecreate(actcal.tse[1:100, ])
fsub <- seqefsub(seqe, minSupport = 0.1)
save(fsub, file="fsub.rda")
rm(fsub)
load("fsub.rda")
Детали моей системы:
- x86_64-pc-linux-gnu (Ubuntu 14.04 LTE)
- Версия R 3.2.0 (2015-04-16)
- Версия RStudio 0.98.1103
- TraMineR стабильная версия 1.8-9 (построен: 2015-04-22)
1 ответ
Если вы проверяете значение, возвращаемое из seqefsub(), это объект подсписка. Этот вид объекта содержит другие объекты, перечисленные в документах как:
seqe: список последовательностей, в которых были найдены подпоследовательности (объект последовательности событий seqelist).
subseq: список подпоследовательностей (объект последовательности событий seqelist).
data: кадр данных, содержащий подробности (поддержка, частота,...) о подпоследовательностях
И другие. Что я сделал, чтобы сохранить результаты, так это преобразовать нужные мне данные в списки и построить с ними фрейм данных перед его сохранением.
library(TraMineR)
data(actcal.tse)
seqe <- seqecreate(actcal.tse[1:100, ])
fsub <- seqefsub(seqe, minSupport = 0.1)
#Get the data I need only
#(Explore the other objects to get what you need)====
#Gets the column support from data (which is a data frame)
support <- fsub$data$Support
#subseq is class that cannot be converted to a data frame
#it stores de subsquences found and I will convert them to strings
sequences <- as.character(fsub$subseq)
#Builds the data frame
result <- data.frame(sequences, support)
#Save it at root
save(result, file="~/result.rda")
rm(result)
load('~/result.rda')
Я надеюсь, что это все еще помогает вам.