2017-02-21 30 views
0

我試圖使用功能在řoptmatch上一些示例數據:包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

懷疑錯誤來自'remove.unmatchables = TRUE'。你的單身人士,治療觀察正在被放棄。 – lmo

回答

0

這是optmatch中的bug。我們有一個修復,將在下一個發佈的版本。目前,解決方法是從數字處理指標中構造一個邏輯變量。例如。

tmp$dose2 <- tmp$dose == 3