我正在尝试调整一些向量,使它们的长度都相同,以便将它们放入数据框中。通过在各种coef
模型上使用lm
调用生成向量。问题来自这样一个事实,即并非每个变量都出现在每个lm
调用中,因此一些向量比其他向量短,但任何特定回归中缺失的变量都可以是随机的,例如:
>regression1
(Intercept) var1 var2 var3 var4
-0.08324358 5.52612036 -0.30234773 1.68640397 -0.45661553
>regression2
(Intercept) var1 var2 var3
2.894916 5.029081 -1.838681 -4.570308
>regression3
(Intercept) var1 var2 var4
16.35817775 3.35612118 0.07659903 -1.50003495
>regression4
(Intercept) var1 var2
16.35817775 3.35612118 0.07659903
所以我需要让最后三个向量看起来像:
>regression2
(Intercept) var1 var2 var3 var4
2.894916 5.029081 -1.838681 -4.570308 0
>regression3
(Intercept) var1 var2 var3 var4
16.35817775 3.35612118 0.07659903 0 -1.50003495
>regression4
(Intercept) var1 var2 var3 var4
16.35817775 3.35612118 0.07659903 0 0
我正在使用此测试:
vars <- c("(Intercept)","var1","var2","var3","var4")
test<- vars %in% names(regression3)
这给了我一个逻辑向量,表明缺少哪些变量:
[1] TRUE TRUE TRUE FALSE TRUE
我试图通过使用此调用
来填充0的FALSEregression3 <- ifelse(test,regression3,0)
如果缺失值在最后顺序定位(似乎var3和var4都缺失,它将起作用)似乎有效,但在上面的情况下,在它之后有TRUE值,这将导致最后一个元素等于第一个元素,而不是第五个元素。我的ifelse语句有什么问题,还是有其他有效的方法可以有条件地将0添加到我的向量中?
答案 0 :(得分:2)
如果您的目标是将“回归矢量”放入数据框中,那么您可以尝试这样做:将矢量放入列表,将它们转换为数据帧,使用rbind.fill
从{绑定数据帧{1}}包(“plyr
填充rbinds
”缺少列的数据框列表,并将NA
替换为零。
NA
答案 1 :(得分:1)
这是一种方法:
setNames(replace(numeric(length(vars)),
vars %in% names(regression3), regression3), vars)
(Intercept) var1 var2 var3 var4
16.35817775 3.35612118 0.07659903 0.00000000 -1.50003495
这将使用当前变量的值替换数字向量中的零。