【发布时间】:2015-01-29 13:46:15
【问题描述】:
我想将潜在分数矩阵转换为观察分数。
可以通过对原始矩阵应用断点/阈值来做到这一点,从而最终得到一个新的分类矩阵。这样做很简单,例如:
#latent variable matrix
true=matrix(c(1.45,2.45,3.45,
0.45,1.45,2.45,
3.45,4.45,5.45)
,ncol=3,byrow=TRUE)
#breaks for the cut function
br=c(-Inf,1,2,3,4,Inf)
#apply cut function to latent variable
observed=apply(true,c(1,2),cut,breaks=br,labels=FALSE,include.lowest=TRUE)
但是,我需要做的是对原始矩阵的每一行应用不同的中断。这些阈值存储在一个矩阵中:
#matrix of breaks for the cut function
br=matrix(c(-Inf,1,2,3,4,Inf,
-Inf,1.5,2.5,3.5,4.5,Inf,
-Inf,2,3,4,5,Inf)
,ncol=6,byrow=TRUE)
也就是说,br 矩阵的第 1 行应该作为 true 矩阵第 1 行的中断并且仅用于该行 , br 的第 2 行是 true 的第 2 行的换行符,以此类推
使用以下似乎不起作用:
for (i in 1:nrow(true)) {
observed[i,]=apply(true[i,],c(1,2),cut,breaks=br[i,],labels=FALSE,include.lowest=TRUE)
}
你有什么想法吗?有什么方法可以将各自的 br 行应用到各自的真实行并将其保存在同一观察行中?
非常感谢!
KH
【问题讨论】: