我正在使用一个名为PIMixture
(see here)的较旧的包,它在代码的不同位置抛给我许多错误.它们看起来都像这样或类似(以下几行实际上来自可重现的示例):
> library(PIMixture)
> data(PIdata)
> model<-"C_CIN3PLUS+L_CIN3PLUS+R_CIN3PLUS~RES_HPV16"
> fit1<-PIMixture(p.model=model,data=PIdata1, model="logistic-Weibull")
Error in if (class(mat2) == "numeric") { : the condition has length > 1
经过调查,我发现
> class(mat2)
[1] "matrix" "array"
因此,IF子句返回错误.我不敢相信在开发这个包的时候这是一个问题,因为它会被注意到.因此,我想知道在Rclass(mat2)
的早期版本中,是否可能只计算为"Matrix"
,因此长度为1.我可以在PIMixture
的源代码中应用如下修复:class(mat2)[1]
.不是很好,但之后一揽子计划就奏效了.我想知道这个问题是不是由于版本之间的R变化引起的,或者为什么会发生这个问题.