2017-08-27 65 views
0

我有以下tibble:如何在tibble中顯示列表的元素?

data_frame(type = list(c('1','2', 'text'), c(1L ,2L), c(1.5, 2.1), c(TRUE, FALSE))) %>% 
     mutate(typeof=unlist(map(type, typeof)), 
mode= unlist(map(type, mode)), 
class= unlist(map(type, class))) 
# A tibble: 4 x 4 
     type typeof  mode  class 
    <list>  <chr>  <chr>  <chr> 
1 <chr [3]> character character character 
2 <int [2]> integer numeric integer 
3 <dbl [2]> double numeric numeric 
4 <lgl [2]> logical logical logical 

,我想用列類型的內容添加一列,如:

# A tibble: 4 x 4 
     type typeof  mode  class vector 
    <list>  <chr>  <chr>  <chr> <chr> 
1 <chr [3]> character character character c('1','2', 'text') 
2 <int [2]> integer numeric integer c(1L ,2L) 
3 <dbl [2]> double numeric numeric c(1.5, 2.1) 
4 <lgl [2]> logical logical logical c(TRUE, FALSE) 

我試圖unlist(map(type, quote))但它給:

# A tibble: 4 x 5 
     type typeof  mode  class vector 
    <list>  <chr>  <chr>  <chr> <list> 
1 <chr [3]> character character character <symbol> 
2 <int [2]> integer numeric integer <symbol> 
3 <dbl [2]> double numeric numeric <symbol> 
4 <lgl [2]> logical logical logical <symbol> 

甚至不知道<symbol>是什麼...

+0

沒有比'type'更好的存儲方式了。將它作爲代碼的字符向量存儲是一個壞主意。要查看它,只需提取它,例如'df $ type',或者使用'tidyr :: unnest'來擴展它(在這種情況下是個壞主意,因爲類型不一致)。 – alistaire

+0

@alistaire我只是試圖打印一張表來學習這三種功能的區別 – Dambo

回答

0

首先,如果您使用的是purrr包,則在創建示例數據框時可能不需要unlist。我們可以使用map_chr來獲得相同的輸出。

library(tidyverse) 
dt <- data_frame(type = list(c('1','2', 'text'), c(1L ,2L), c(1.5, 2.1), c(TRUE, FALSE))) %>% 
    mutate(typeof = map_chr(type, typeof), 
     mode = map_chr(type, mode), 
     class = map_chr(type, class)) 

至於你想要的輸出,我想我們可以用map_chrtoString創建一個字符串與列表中的所有內容。雖然它與你想要的輸出有點不同,但我認爲它可以用於演示目的。

dt2 <- dt %>% mutate(vector = map_chr(type, toString)) 

dt2 
# A tibble: 4 x 5 
     type typeof  mode  class  vector 
    <list>  <chr>  <chr>  <chr>  <chr> 
1 <chr [3]> character character character 1, 2, text 
2 <int [2]> integer numeric integer  1, 2 
3 <dbl [2]> double numeric numeric 1.5, 2.1 
4 <lgl [2]> logical logical logical TRUE, FALSE 
相關問題