我有一个转换矩阵,从一个状态到另一个状态的成本,例如
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-ish 方法可以做到这一点。我最终使用了一个 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
(计算同一个表元素之间距离的操作不到一秒)。
是否有一个简单、快速、一两行的命令可以让我得到上面的成本列?