r - 循环遍历列表中的序列对象?

标签 r data-manipulation traminer

我有一个包含 24 个 TraMineR 序列对象的列表。现在我想计算每个序列对象的最佳匹配距离(仅在每个对象内)并将其存储在一个新列表中,该列表现在由 24 个 OM 距离对象(距离矩阵)组成。

数据集可以在 here 找到.

library(TraMineR)
sequences <- read.csv(file = "event-stream-20-l-m.csv", header = TRUE, nrows=10)
repo_names = colnames(sequences)

# 1. Loop across and define the 24 sequence objects & store them in sequence_objects
colpicks <- seq(10,240,by=10)
sequence_objects <- mapply(function(start,stop) seqdef(sequences[,start:stop]), colpicks-    9, colpicks)

# 2. Calculate the costs for OM distances within each object 
costs <- mapply(seqsubm(sequence_objects, method="TRATE"))

# 3. Calculate the OM distance objects for each sequence object
sequences.om <- seqdist(sequence_objects, method="OM", indel=1, sm=costs, with.missing=FALSE, norm="maxdist")

步骤(1)工作正常,但是当我进行到步骤(2)时,它告诉我:

Error in seqsubm(sequence_objects, method = "TRATE") : 
[!] data is NOT a sequence object, see seqdef function to create one

这是很自然的,因为 sequence_objects 不是一个序列对象,而是一个序列对象列表。

如何将 seqsubm 函数应用于序列对象列表?

最佳答案

我不熟悉 TraMineR 包,但看起来您正在尝试迭代 sequence_objects 的元素。

maply 用于同时迭代多个对象。
相比之下,lapply 用于迭代单个对象。

因此,以下方法可能适合您:

 costs <- lapply(sequence_objects, seqsubm, method="TRATE")

关于r - 循环遍历列表中的序列对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15839403/

相关文章:

css - 在 Shiny 的仪表板中永久更改标题标题颜色

r - 使用 google drive R 包获取文件的大小

python - 在 pandas 中进行几乎不完整的数据透视表操作

time-series - 比较多个时间序列的最有意义的方法

r - 使用 seqrplot 命令输入新的轴刻度标签

r - facet_wrap : How to add y axis to every individual graph when scales ="free_x"?

r - 如何在forestplot包中使用估计?

sql - R:基于 "OR"语句的连接

r - 如何防止 TraMineR 状态分布图 (seqdplot) 删除缺失状态

r - 如何从 TraMineR 中的事件序列创建状态序列?