【发布时间】:2013-04-05 16:05:05
【问题描述】:
我有一个包含 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 函数应用于序列对象列表?
【问题讨论】:
-
只是投票结束而不建议问题如何改进不是很有建设性...
-
我怀疑这些是迁移这个问题的投票,因为它可能会在 SO 上得到更好的关注。不过,我确实有一个改进建议:请仔细阅读代码和错误消息,因为错误消息中的
sequences_objects与代码中的sequence_objects并不完全匹配——这有点奇怪。 -
已更正 - 现在它有正确的错误消息。
-
@histelheim,您能否发布
sequences的示例数据。谢谢 -
mapply 的语法是
mapply(function, list1, list2, MoreArgs=list(...) )。在没有数据的情况下,很难猜测您可能在哪里出现更多错误,但您当前的调用肯定是错误的。
标签: r data-manipulation traminer