我正尝试在某些示例数据中使用 R 包 optmatch 中的对功能:
> tmp
id dose Pred
1 1 2 0.08494142
2 1 2 -0.02784262
3 1 2 -0.05284574
4 1 2 -0.07428686
5 1 3 0.04335151
可以使用以下代码重新创建:
tmp <- data.frame(id = rep(1,5), dose = c(rep(2,4),3),
Pred = c(0.08494142, -0.02784262,
-.05284574, -0.07428686,
0.04335151))
当我运行代码时:
pair(x = tmp$Pred, z = tmp$dose, data=tmp, remove.unmatchables = TRUE)
我收到以下错误:
Error in toZ(z) : Treatment indicator must have exactly 2 levels not 1
然而,从数据框架可以看出,治疗指标变量剂量只有两个级别:2或3。
使用函数 getAnywhere 我可以打印出函数 toZ (由对调用)的部分,可能会生成错误:
> getAnywhere(toZ)
[Lines omitted]
function (x)
{
[Lines of code omitted]
if (length(unique(x)) != 2) {
stop(paste("Treatment indicator must have exactly 2 levels not",
length(unique(x))))
}
为了证实我的怀疑,我执行以下操作:
> length(unique(tmp$dose))
[1] 2
确认治疗指标确实恰好有2个等级。我很困惑。任何帮助将不胜感激。
答案 0 :(得分:0)
这是optmatch中的bug。我们有一个修复程序将在下一个发布的版本中。目前,解决方法是从数字处理指标构建逻辑变量。 E.g。
tmp$dose2 <- tmp$dose == 3