Как сохранить и загрузить вывод seqefsub() в TraMineR

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

Моя проблема в том, что когда я сохраняю результаты в файл и загружаю их, структура данных кажется нарушенной. В результате я не могу использовать функции 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 (построено: 22 апреля 2015 г.)

person Balazs Dukai    schedule 18.05.2015    source источник
comment
Я запустил ваш код в RStudio, и строка load("fsub.rda") дала сбой RStudio. Я попробовал еще раз с родной консолью R и R вылетел с ошибкой segfault. Когда я перезапустил R и попытался загрузить fsub.rda без загрузки TraMineR, fsub.rda загрузился без проблем, но его структура была другой (по-прежнему список из 5, но с другой структурой и атрибутами для элементов списка). Когда я затем загрузил TraMineR и набрал либо fsub, либо str(fsub), R снова вылетел с segfault.   -  person eipi10    schedule 18.05.2015
comment
Не уверен, что проблема, описанная выше, является ошибкой TraMineR, но решил опубликовать сообщение на случай, если это поможет диагностировать проблему.   -  person eipi10    schedule 18.05.2015
comment
@eipi10 Спасибо за описание. У меня точно такая же проблема, включая сбои и все такое.   -  person Balazs Dukai    schedule 18.05.2015
comment
Я проверил веб-сайт TraMineR, и ваша проблема выглядит так, будто это пример известная ошибка. В описании этой ошибки также указано, что невозможно сохранить последовательности событий в виде файлов данных R.   -  person eipi10    schedule 18.05.2015


Ответы (1)


Если вы проверите значение, возвращаемое функцией seqefsub(), это объект подчиненного списка. Этот вид объекта содержит другие объекты, перечисленные в документах как:

seqe: список последовательностей, в которых производился поиск подпоследовательностей (объект последовательности событий списка последовательностей).

subseq: список подпоследовательностей (объект последовательности событий списка последовательностей).

данные: кадр данных, содержащий сведения (поддержка, частота и т. д.) о подпоследовательностях.

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

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')

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

person Joab Mendes    schedule 22.09.2016
comment
Я больше не работаю с TraMineR, но, похоже, это обходной путь. Однако, насколько я понимаю, сохранять и загружать объекты seqelist и subseqelist как таковые по-прежнему нельзя. Таким образом, даже после того, как я загрузил result, это все еще просто фрейм данных, который не обеспечивает той же функциональности, что и два упомянутых выше класса. Поправьте меня, если я не прав, пишу по памяти. - person Balazs Dukai; 25.09.2016
comment
Да @Balazs, это будет кадр данных. Существуют ли другие библиотеки для работы с анализом последовательностей в R? - person Joab Mendes; 26.09.2016
comment
Я не знаю о других библиотеках, но причина, по которой я не использую TraMineR, не связана с его качеством. Просто с тех пор я не работал над проектами, которые требовали этого ;-). - person Balazs Dukai; 27.09.2016