2017-08-27 8 views
0

私は、次の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私は、これらの3つの機能の違いについて学習目的でテーブルを印刷しようとしました – 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)) 

、私たちは、リスト内のすべての内容の文字列を作成するためにtoStringmap_chrを使用することができると思います。それはあなたが望む出力とはまだ少し異なりますが、私はデモの目的に役立つと思います。

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 
関連する問題