我想修改基数R的lm()
函数。具体地说,如果所有数据都是NA
,我不希望它失败。现在,它失败并显示错误:0 (non-NA) cases.
我必须在data.table中调用lm()
。涉及更多的链接和分组过程。
我为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
属性,但没有解决方法。