tidyverse
を頻繁に使用すると、名前付きベクトルをdata.frame
/に変換するという課題に直面することがよくあります。
これを行う方法として、どのような方法がありますか?
EDIT:これに関連している:thisとthis githubの発行名前付きベクトルをdata.frame/tibbleに変換する方法が好ましい
だから私がしたい:
require(tidyverse)
vec <- c("a" = 1, "b" = 2)
は、このになるために:
# A tibble: 1 × 2
a b
<dbl> <dbl>
1 1 2
私は経由例えばこれを行うことができます:
vec %>% enframe %>% spread(name, value)
vec %>% t %>% as_tibble
ユースケース例:
require(tidyverse)
require(rvest)
txt <- c('<node a="1" b="2"></node>',
'<node a="1" c="3"></node>')
txt %>% map(read_xml) %>% map(xml_attrs) %>% map_df(~t(.) %>% as_tibble)
# A tibble: 2 × 3
a b c
<chr> <chr> <chr>
1 1 2 <NA>
2 1 <NA> 3
まさに、どちらかといえば、あなたは何をしているかについては欠けていると思います – shayaa
私は自分自身を尋ねました(?)これは 'map_df(〜t(。)%>%as_tibble)'の代わりに 'bind_rows'が動作しないためです。だから今までは、文字列(要素ではない)を保持したデータフレームに変換して変換し、結果を結合します。しかし、この共通のタスクのためのショートカットはいいかもしれません。 – lukeA
@lukeA、私は 'bind_rows'が今あなたが望むように動作するように更新されていると思います – markdly