Измените функцию lm () и предотвратите ее сбой - PullRequest
0 голосов
/ 08 мая 2019

Я хочу изменить функцию lm() базы R. В частности, я не хочу, чтобы она потерпела неудачу, если все данные NA.В настоящий момент происходит сбой с ошибкой: 0 (non-NA) cases.

Я должен вызвать lm() в data.table.Вовлечено больше процедур объединения и группировки.

Я написал оболочку для lm(), но я не знаю, как получить доступ к аргументу data.Я могу получить доступ к аргументу formula.

LM = function(...) {

  for(i in list(...)) {
    print(i);
  }

  lm(...);
}


> mydata[Date > "May 1951", lm(dep_var ~ ind_var)$coef[2], by = Date]
         Date          V1
  1: Jun 1951  0.56078961
  2: Jul 1951  0.03058471
  3: Aug 1951  0.67276820
  4: Sep 1951 -0.36109541
  5: Oct 1951  0.23469848


> mydata[Date > "May 1951", LM(dep_var ~ ind_var)$coef[2], by = Date]
dep_var ~ ind_var
<environment: 0x3662f3d0>

<<< repeat 4 times >>>

         Date          V1
  1: Jun 1951  0.56078961
  2: Jul 1951  0.03058471
  3: Aug 1951  0.67276820
  4: Sep 1951 -0.36109541
  5: Oct 1951  0.23469848

Ниже приведены случаи сбоев:

> mydata[Date == "Jan 1926", LM(dep_var ~ ind_var)$coef[2], by = Date]
dep_var ~ ind_var
<environment: 0x99f14860>
Error in lm.fit(x, y, offset = offset, singular.ok = singular.ok, ...) :
  0 (non-NA) cases
>
> mydata[Date == "Jan 1926", lm(dep_var ~ ind_var)$coef[2], by = Date]
Error in lm.fit(x, y, offset = offset, singular.ok = singular.ok, ...) :
  0 (non-NA) cases
>

Все данные для "Jan 1926" NA и, следовательно, lm() не удаются.Я хочу, чтобы моя функция оболочки LM() вернула NA для этого случая и продолжила работать.Я играл с атрибутом na.action, но без решения.

...