将具有不均匀矩阵的强制列表强制转换为tibble

时间:2017-11-10 10:14:24

标签: r list tibble

我有一个这样的清单:

lst <-
list(structure(c("1", "[19]"), .Dim = 1:2), structure("1", .Dim = c(1L, 
1L)), structure(c("1", "[41]"), .Dim = 1:2), structure(c("1", 
"[55]"), .Dim = 1:2), structure(c("1", "[56]"), .Dim = 1:2), 
    structure(c("1", "[84]"), .Dim = 1:2))

如何将其转换为tibble以便:

rslt <-
tibble(batch=c(1,1,1,1,1,1), id=c("[19]","","[41]","[55]","[56]","[84]"))

# A tibble: 6 x 2
  batch    id
  <dbl> <chr>
1     1  [19]
2     1      
3     1  [41]
4     1  [55]
5     1  [56]
6     1  [84]

2 个答案:

答案 0 :(得分:3)

我们遍历 @Component({ selector: 'hotel', templateUrl: './hotel.component.html' }) export class HotelComponent implements OnInit { data: any; constructor(){ this.getData((data) => { this.data = data; }); } ngOnInit() { } ngAfterViewInit() { $('td').on('click', function() { console.log("alooo"); var $this = $(this); var $input = $('<input>', { value: $this.text(), type: 'text', blur: function() { $this.text(this.value); }, keyup: function(e) { if (e.which === 13) $input.blur(); } }).appendTo( $this.empty() ).focus(); }); } public getData(data) { const req = new XMLHttpRequest(); req.open('GET', 'assets/data/listOfHotels.json'); req.onload = () => { data(JSON.parse(req.response)); }; req.send(); } } 并将其转换为lst,因为它是data.frame。通常情况下,如果尺寸相同,则使用matrix应该有效。但是,这里不一样。使用do.call(rbind, lst)中的map_dfr,我们遍历每个purrr元素,应用函数lst将其转换为as.data.frame,同时,我们得到我们正在使用data.frame

的单个数据集
  

map_dfr()和map_dfc()返回由行绑定创建的数据帧   列绑定分别。他们需要安装dplyr。

map_dfr

注意:它返回不存在的元素的NA,并且优于具有空白元素

答案 1 :(得分:3)

plyr包中还有一个非常方便的功能,可以轻松处理,

plyr::rbind.fill(lapply(lst, as.data.frame))

#  V1   V2
#1  1 [19]
#2  1 <NA>
#3  1 [41]
#4  1 [55]
#5  1 [56]
#6  1 [84]