gpt4 book ai didi

R:使用特定于行的中断应用剪切

转载 作者:行者123 更新时间:2023-12-04 21:14:11 25 4
gpt4 key购买 nike

我想将潜在分数矩阵转换为观察分数。

可以通过对原始矩阵应用断点/阈值来实现这一点,从而最终得到一个新的分类矩阵。这样做很简单,例如:

#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 行应该作为真矩阵的第 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

最佳答案

一些函数式编程和 Map做诀窍:

splitLines = function(m) split(m, rep(1:nrow(m), ncol(m)))

do.call(rbind, Map(cut, splitLines(true), splitLines(br), labels=F, include.lowest=T))
# [,1] [,2] [,3]
#1 2 3 4
#2 1 1 2
#3 3 4 5

关于R:使用特定于行的中断应用剪切,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28216318/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com