Ошибка при создании фрейма данных: только 0 могут быть смешаны с отрицательными индексами - PullRequest
0 голосов
/ 10 февраля 2019

У меня есть следующие переменные: CFNAIdiff (первая разность), HOUSTgr, INDPROgr, UMCSENTgr и UNRATEgr (которые являются темпами роста).Я хочу построить модель AR и пытаюсь построить фрейм данных следующим образом:

dataframe <- data.frame(y = INDPROgr[2:T], INDPROgr = INDRPOgr[1:(T-1)],
                        HOUSTgr = HOUSTgr[1:(T-1)], UMCSENTgr = UMCSENTgr[1:(T-1)],
                        UNRATEgr = UNRATEgr[1:(T-1)], CFNAIdiff = CFNAIdiff[1:(T-1)])

Однако я сталкиваюсь со следующей проблемой:

Ошибка в INDPROgr[1: (T - 1)]: только 0 могут быть смешаны с отрицательными индексами

Что я указал неправильно?

1 Ответ

0 голосов
/ 10 февраля 2019

Ошибка указывает на то, что вы пытаетесь установить подмножество как положительных, так и отрицательных чисел.Давайте создадим простой пример

dat <- data.frame(A = LETTERS[1:10], B = 1:10)

В этом примере мы можем поднастроить data.frame, используя стандартные методы, как вы делаете в своем собственном коде

dat[0:3,]

, который вернет первые 3строк.Здесь 0 обрабатывается как пустая строка и, таким образом, возвращает пустую строку (отличную от строки с нулями)

dat[0,]

Теперь, если мы по ошибке в результате подмножества, скажем, переменная T, и это дляпо какой-то причине 0 или отрицательно, вы получите ошибку, если хотите вернуть какие-либо конкретные строки.Это, в свою очередь, позволяет избежать любых конфликтов, таких как

dat[c(-1,1),]

, который технически пытается вернуть весь фрейм данных за вычетом первой строки, но включая первую строку, эквивалентную rbind(dat[-1,], dat[1,]).

Так что, если у нас есть какая-то функция или скрипт, которые поднаборы похожи на ваш скрипт

dataframe<- data.frame( y = INDPROgr[2:T], 
                        INDPROgr = INDRPOgr[1:(T-1)], 
                        HOUSTgr = HOUSTgr[1:(T-1)], 
                        UMCSENTgr = UMCSENTgr[1:(T-1)], 
                        UNRATEgr = UNRATEgr[1:(T-1)], 
                        CFNAIdiff = CFNAIdiff[1:(T-1)])

R вернет ошибку в случае, если T либо 0, либо T-1 = -1, что означает, что вы поднабор 1:(-1),или в качестве альтернативы, если само T отрицательно по тем же причинам.

Поэтому я предлагаю проверить, становится ли T отрицательным или нулевым где-то в вашем коде.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...