1

我有很长的数据集,我想在其中试验 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(建于:2015-04-22)
4

1 回答 1

2

如果您检查从 seqefsub() 返回的值,它是一个 subseqelist 对象。这种对象包含文档中列出的其他对象:

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

我希望它仍然可以帮助你。

于 2016-09-22T20:19:57.823 回答