如何将矢量转换为不同的列,在剩余的单元格中留下NA

时间:2015-04-29 19:19:23

标签: r vector dataframe rbind cbind

假设我有一个不确定数量的不同长度的向量,我想有效地将​​它们组合在一起,但需要注意的是它们必须在结果data.frame中占据不同的列。您可以假设向量包含在列表中,但您不能依赖于列表中可能定义的任何组件名称。

下面我提供一个随机样本输入(lv)和一个不好的解决方案来生成所需的输出,通过重复NA并按名称组合每个输入向量来手动构建结果data.frame。 / p>

set.seed(1);
lv <- list(a=sample(30,5),b=sample(30,3),c=sample(30,7),d=sample(30,2));
lv;
## $a
## [1]  8 11 17 25  6
##
## $b
## [1] 27 28 19
##
## $c
## [1] 19  2  6  5 18 10 30
##
## $d
## [1] 15 21
##
with(lv,data.frame(a=c(a,rep(NA,length(b)+length(c)+length(d))),b=c(rep(NA,length(a)),b,rep(NA,length(c)+length(d))),c=c(rep(NA,length(a)+length(b)),c,rep(NA,length(d))),d=c(rep(NA,length(a)+length(b)+length(c)),d)));
##     a  b  c  d
## 1   8 NA NA NA
## 2  11 NA NA NA
## 3  17 NA NA NA
## 4  25 NA NA NA
## 5   6 NA NA NA
## 6  NA 27 NA NA
## 7  NA 28 NA NA
## 8  NA 19 NA NA
## 9  NA NA 19 NA
## 10 NA NA  2 NA
## 11 NA NA  6 NA
## 12 NA NA  5 NA
## 13 NA NA 18 NA
## 14 NA NA 10 NA
## 15 NA NA 30 NA
## 16 NA NA NA 15
## 17 NA NA NA 21

注意:您不必使用rbind(),我只觉得这是引入问题的最明确方式。另一种思考方式是我想将cbind()向量分成不同的(从不重叠)行。

0 个答案:

没有答案