Ошибка Mutate при применении Purrr :: Map для сгруппированных данных

BigDecimal - это то, что вы хотите. Он имеет такие методы, как add (), multiply () pow () и т. Д., Которые возвращают новые объекты BigDecimal.

1
задан MYjx 17 January 2019 в 03:12
поделиться

2 ответа

Когда вы передаете metric в часть ... в map, не ясно, что это столбец во вложенном фрейме данных. Но как только вы вложите данные, как вы сделали, metric - это не столбец в data, это столбец во вложенном фрейме ... также называемый «данными». (Это хороший пример того, почему вам нужны более конкретные имена переменных между прочим.)

Если вы отображаете столбец data, вы можете использовать $metric, чтобы указать на этот столбец, либо в письменной форме. из функции, как я сделал здесь (например, df$metric), или в формуле (например, .$metric).

Как сказал @www, в этом случае вам не нужны вложенные фреймы данных. Но для более сложного случая вам могут понадобиться вложенные фреймы данных, например, для построения моделей, поэтому полезно знать, как ссылаться именно на те данные, которые вы хотите.

library(tidyverse)

data %>% 
  group_by(name) %>% 
  tidyr::nest() %>%
  mutate(result = map(data, function(df) {
    get_sample_size(metric = df$metric, threshold = 0.01)
  }))
#> # A tibble: 3 x 3
#>   name  data             result              
#>   <fct> <list>           <list>              
#> 1 A     <tibble [1 × 1]> <data.frame [1 × 1]>
#> 2 B     <tibble [1 × 1]> <data.frame [1 × 1]>
#> 3 C     <tibble [1 × 1]> <data.frame [1 × 1]>

Создано в 2019-01-16 с помощью пакета представитель (v0.2.1)

0
ответ дан camille 17 January 2019 в 03:12
поделиться

Вам не нужно nest. Аргумент metric из функции get_sample_size должен быть числовым вектором, но если вы сделаете nest, столбец data будет списком фрейма данных, который не может быть вводом для аргумента metric. [1110 ]

Я думаю, что вы можете использовать summarize и map, чтобы применить свою функцию к столбцу metric.

library(tidyverse)

data %>% 
  group_by(name) %>% 
  summarize(result = purrr::map(.x = metric, 
                                .f = get_sample_size,  
                                threshold = 0.01))
# # A tibble: 3 x 2
#   name  result              
#   <fct> <list>              
# 1 A     <data.frame [1 x 1]>
# 2 B     <data.frame [1 x 1]>
# 3 C     <data.frame [1 x 1]>
0
ответ дан www 17 January 2019 в 03:12
поделиться
Другие вопросы по тегам:

Похожие вопросы: