私はいくつかのデータのために二重ネスト構造を作成しました。どのように私は2番目のレベルのデータにアクセスすることができます(またはそのことについては、n番目のレベルを?)Rのネストされたリストにアクセス
library(gapminder)
library(purrr)
library(tidyr)
gapminder
nest_data <- gapminder %>% group_by(continent) %>% nest(.key = by_continent)
nest_2<-nest_data %>% mutate(by_continent = map(by_continent, ~.x %>% group_by(country) %>% nest(.key = by_country)))
どのように私は今nest_2からのデータフレームまたはtibbleに中国のためのデータを得ることができますか?
私はすべてのアジアのデータを取得できますが、中国を分離することはできません。
a<-nest_2[nest_2$continent=="Asia",]$by_continent ##Any better way of isolating Asia from nest_2?
は、私はその後、
b<-a[a$country=="China",]$by_country
を行うことができると思った。しかし、私は次のようなエラーにだから私の大きな誤差は製品がリストである可能性がありましたことを認識していなかった
Error in a[a$country == "China", ] : incorrect number of dimensions
> glimpse(a)
List of 1
$ :Classes ‘tbl_df’, ‘tbl’ and 'data.frame': 33 obs. of 2 variables:
..$ country : Factor w/ 142 levels "Afghanistan",..: 1 8 9 19 25 56 59 60 61 62 ...
..$ by_country:List of 33
を取得します最後に[[1]]を加えることで救済されました。しかし、私は@ Floo0の解決策を非常に気に入っていました。私は、列の列が提供された列と異なる場合に変数の名前を取る関数を提供する自由を取った。
select_unnest <- function(df, listcol, var, var_val){ ###listcol, var and var_val must enclosed by ""
df[[listcol]][df[[var]]==var_val][[1]]
}
nest_2 %>% select_unnest(listcol = "by_continent", var = "continent", var_val = "Asia") %>%
select_unnest(listcol = "by_country", var = "country", var_val = "China")
ハズレB <-a [[$国== "中国"、]]で取得するために一緒にフォーム
[filter, column][[1]]
の呼び出しをチェーンすることができます$ by_country [[a $ country == "China"、]]のエラー:誤った添字の数 – Misha