Как сохранить и загрузить вывод 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')

Я надеюсь, что это все еще помогает вам.

Другие вопросы по тегам