1
我自學的是R tidyverse purr()
包,並且在嵌套數據幀列上實現map()
時遇到問題。有人能解釋我錯過了什麼嗎?在一列嵌套數據幀上實現map()
使用基礎R ChickWeight數據集作爲一個例子,我可以很容易地得到觀察次數爲下飲食#1中的每個時間點,如果我對飲食#1第一個過濾器,像這樣:
library(tidyverse)
ChickWeight %>%
filter(Diet == 1) %>%
group_by(Time) %>%
summarise(counts = n_distinct(Chick))
這是很大,但我想立即爲每種飲食做到這一點,我認爲嵌套數據和map()
迭代將是一個很好的方法。 這是我做過什麼:
example <- ChickWeight %>%
nest(-Diet)
實現那麼這個地圖功能實現是我的目標爲:
map(example$data, ~ .x %>% group_by(Time) %>% summarise(counts = n_distinct(Chick)))
然而,當我嘗試使用管道把它在實現這個相同的命令原始數據幀的另一列失敗。
example %>%
mutate(counts = map(data, ~ .x %>% group_by(Time) %>% summarise(counts = n_distinct(Chick))))
Error in eval(substitute(expr), envir, enclos) :
variable 'Chick' not found
爲什麼會發生這種情況?
我也嘗試了它在數據框分裂成一個列表,它沒有工作。
ChickWeight %>%
split(.$Diet) %>%
map(data, ~ .x %>% group_by(Time) %>% summarise(counts = n_distinct(Chick)))
你的意思是從https://github.com/tidyverse/tidyverse開發的版本嗎?我只是重新安裝它(版本1.1.1.9000),它找不到'.data'。我得到'mutate_impl(.data,dots):object'.data'not found'錯誤。 –
Devel dplyr,你可以從這裏安裝(https://github.com/hadley/dplyr/)。 – alistaire