首页 > 解决方案 > 获取行长不均匀的数据框列表

问题描述

有一个由许多行长不均匀的数据帧组成的列表。列名总是在迭代:name、var、name.1、var.1 等。有时有些列只有 1 行和 NA。问:如何将它们全部匹配在一起?

 myData<-list(name=c("1","2","3","4","5","6","7"),var=c(5,5,5,5,5,5,5),     name=c(1,2,3,4,5,6,7),var=c(2,2,2,2,2,2),name=c(1,2,3,4,5,6),var=c(5,5,5,4,5),name=c(""),var=c(""))

最终结果将如下所示:

  name var name.1 var.1 name.2 var.2 name.3 var.3 …
1  1    5    1      2    1      5    [NA]    [NA] …
2  2    5    2      2    2      5  
3  3
.
.

标签: rlistdataframesubset

解决方案


固定数据:

myData<-list(name=c("1","2","3","4","5","6","7"),var=c(5,5,5,5,5,5,5),     name=c(1,2,3,4,5,6,7),var=c(2,2,2,2,2,2),name=c(1,2,3,4,5,6),var=c(5,5,5,4,5),name=c(""),var=c(""))

工作解决方案:

( maxlen <- max(lengths(myData)) )
# [1] 7
data.frame(lapply(myData, `length<-`, maxlen))
#   name var name.1 var.1 name.2 var.2 name.3 var.3
# 1    1   5      1     2      1     5             
# 2    2   5      2     2      2     5   <NA>  <NA>
# 3    3   5      3     2      3     5   <NA>  <NA>
# 4    4   5      4     2      4     4   <NA>  <NA>
# 5    5   5      5     2      5     5   <NA>  <NA>
# 6    6   5      6     2      6    NA   <NA>  <NA>
# 7    7   5      7    NA     NA    NA   <NA>  <NA>

推荐阅读