ある状態から別の状態に移行するコストを伴う遷移行列があります。
cost <- data.frame( a=c("aa","ab"),b=c("ba","bb"))
(文字列 "aa" が a から a に移動するコストであるふりをする)
私は次のdata.frame
状態の を持っています:
transitions <- data.frame( from=c("a","a","b"), to=c("a","b","b") )
各トランジションのコストを入れてトランジションに列を追加できるようにしたいので、最終的には次のようになります。
from to cost
1 a a aa
2 a b ab
3 b b bb
これを行うR風の方法があると確信しています。forループを使用することになりました:
n <- dim(data)[1]
v <- vector("numeric",n)
for( i in 1:n )
{
z<-data[i,c(col1,col2),with=FALSE]
za <- z[[col1]]
zb <- z[[col2]]
v[i] <- dist[za,zb]
}
data <- cbind(data,d=v)
names(data)[dim(data)[2]] <- colName
data
しかし、これはかなり見苦しく、信じられないほど遅いです。2M 行で約 20 分かかりますdata.frame
(同じテーブルの要素間の距離を計算する操作には 1 秒もかかりません)。
上記のコスト列を取得する、簡単で高速な 1 行または 2 行のコマンドはありますか?