Ошибка в 1:ncol(x): аргумент длины 0 при использовании Amelia в R

Я работаю с панельными данными. У меня есть более 6000 наблюдений за годом страны, и я уточнил мое вменение Амелии следующим образом:

(CountDependentVariable, m=5, ts="year", cs="cowcode", 
                sqrts=c("OtherCountVariable2", "OtherCount3", "OtherCount4"),
                ords=c("OrdinalVar1", "Ordinal Variable 2"), 
                lgstc=c("ProportionVariale"),
                noms=c("NominalVar1"),p2s = 0, idvars = c("country"))

Когда я запускаю эти строки кода, я продолжаю получать следующую ошибку:

Error in 1:ncol(x) : argument of length 0

Я видел, как люди получают подобную ошибку, но в разных контекстах. Важно отметить, что есть несколько непрерывных независимых переменных, которые я исключил из кода Amelia, потому что у меня сложилось впечатление, что они вменяются БЕЗ необходимости этого делать. Кто-нибудь знает:

1) Что означает эта ошибка? 2) Как исправить эту ошибку?

Обновление № 1: в приведенном выше примере кода предоставлено больше контекста с точки зрения типов переменных в данных моей панели подсчета.

Обновление № 2. Я провел небольшое исследование и наткнулся на файл R, содержащий функцию который диагностирует возможные ошибки кода Amelia. После запуска кода я сначала получил следующее сообщение об ошибке (и многие другие после этого):

AMn<-nrow(x)
Error in nrow(x) : object 'x' not found
AMp<-ncol(x)
Error in ncol(x) : object 'x' not found
subbedout<-c(idvars,cs,ts)
Error: object 'idvars' not found

Error Code: 4
if (any(colSums(!is.na(x)) <= 1)) {
all.miss <- colnames(x)[colSums(!is.na(x)) <= 1]
if (is.null(all.miss)) {
all.miss <- which(colSums(!is.na(x)) <= 1)
  }
all.miss <- paste(all.miss, collapse = ", ")
error.code<-4
error.mess<-paste("The data has a column that is completely missing or only has one,observation.  Remove these columns:", all.miss)
return(list(code=error.code,mess=error.mess))
}
Error in is.data.frame(x) : object 'x' not found

Error codes: 5-6
Errors in one of the list variables
idout<-listcheck(idvars,"One of the 'idvars'")
Error in identical(vars, NULL) : object 'idvars' not found

В настоящее время нет пропущенных значений для переменной страны, которую я помещаю в аргумент idvars. Однако первый же «кусок» ошибок хочет, чтобы я поверил, что это так.

Я неправильно указываю код Амелии, который у меня есть выше?


person ealfons1    schedule 31.08.2013    source источник
comment
Вероятно, это означает, что x на самом деле является каким-то вектором нулевой длины. Но помимо этого, почти невозможно отлаживать это для вас, не имея доступа к вашим данным. Если мы не сможем запустить ваш код и выдать ту же ошибку, нам будет сложно чем-то помочь.   -  person joran    schedule 31.08.2013
comment
Прочитайте о том, как отлаживать ошибки, а затем отредактируйте свой вопрос, чтобы предоставить более подробную информацию на основе того, что вы найдете.   -  person joran    schedule 31.08.2013
comment
Не видя больше, я бы сказал, что вы сталкиваетесь с ошибкой в ​​​​функции, которую вы вызываете. Видение 1:nrow(x) (или 1:ncol(x)) обычно является ошибкой в ​​коде R, хотя в большинстве случаев это будет работать. Обычно гораздо лучше использовать оператор типа seq_len(NROW(x)) вместо 1:nrow(x), так как это устраняет сразу две ошибки (1) NULL x и (2) не null, а 0-row x.   -  person leif    schedule 31.08.2013
comment
Я бы запустил options(error = recover) перед вызовом функции, чтобы вы могли проверить среду, где происходит ошибка, и выяснить это самостоятельно.   -  person flodel    schedule 31.08.2013


Ответы (1)


Я забыл указать фрейм данных в исходном коде Амелии (хлопает рукой по лбу). Итак, теперь, после решения странной проблемы, описанной выше, я получаю от Амелии следующую ошибку:

Amelia Error Code:  44 
 One of the variable names in the options list does not match a variable name in the data.

Я проверил имена переменных, и они дословно совпадают с тем, что я назвал их в кадре данных.

person ealfons1    schedule 31.08.2013