2

TraMineR24 個のシーケンス オブジェクトを含むリストがあります。次に、これらの各シーケンス オブジェクト (各オブジェクト内のみ) の最適一致距離を計算し、24 個の OM 距離オブジェクト (距離行列) で構成される新しいリストに格納します。

データセットはここにあります。

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この関数をシーケンス オブジェクトのリストに適用するにはどうすればよいですか?

4

1 に答える 1

2

パッケージには詳しくありませんTraMineRが、の要素を繰り返し処理しようとしているようですsequence_objects

mapply複数のオブジェクトを同時に反復するためのものです。
lapply対照的に、単一のオブジェクトを反復処理するためのものです。

したがって、次のことがうまくいく可能性があります。

 costs <- lapply(sequence_objects, seqsubm, method="TRATE")
于 2013-04-05T17:52:46.337 に答える