Пытаюсь ответить на чей-то вопрос в списке рассылки ggplot2, и я не могу его понять: https://groups.google.com/forum/#!topic/ggplot2/YgCqQX8JbPM
OP хочет применить различные параметры запуска к подмножествам своих данных для модели nls. Я думал, что ему следует прочитать dplyr и purrr, но после нескольких часов попыток я наткнулся на стену. Не уверен, что это ошибка или мой недостаток опыта работы с мурлыканьем.
library(tidyverse)
# input dataset
df <- data.frame(Group = c(rep("A", 7), rep("B", 7), rep("C", 7)),
Time = c(rep(c(1:7), 3)),
Result = c(100, 96.9, 85.1, 62.0, 30.7, 15.2, 9.6,
10.2, 14.8, 32.26, 45.85, 56.25, 70.1, 100,
100, 55.61, 3.26, -4.77, -7.21, -3.2, -5.6))
# nest the datasets for computing models
df_p <-
df %>%
group_by(Group) %>%
nest
# add model parameters as rows/columns
df_p$starta = c(-3, 4,-3)
df_p$startb = c(85, 85, 85)
df_p$startc = c(4, 4, 4)
df_p$startd = c(10,10,10)
# compute models using nls
df_p %>%
mutate(model2 = map(data, ~nls(Result ~ a+(b-a)/(1+(Time/c)^d), data = ., start = c(a = starta, b = startb, c = startc, d = startd)))
)
#Error in mutate_impl(.data, dots) :
# parameters without starting value in 'data': a, b, d
Похоже, это связано с этой ошибкой, но это уже исправлено ... https://github.com/hadley/dplyr/issues/1447
Насколько я могу судить, он ищет переменные в области вложенного тиббла, но я хочу, чтобы он находился в области действия вызова mutate. Я не знаю, есть ли способ обойти это.