Я пытаюсь использовать пару функцию в R пакет 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 Я могу напечатать секцию функции ТОЗ (который вызывается парой), который предположительно генерирует ошибку:
> 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 уровней. Я очень озадачен. Любая помощь будет принята с благодарностью.
Уверен, что ошибка исходит из 'remove.unmatchables = TRUE'. Ваш синглтон, наблюдение за лечением прекращается. – lmo