измените функцию lm или loess, чтобы использовать ее в geom_smooth ggplot2

StackOverflow https://stackoverflow.com/questions/2370648

  •  24-09-2019
  •  | 
  •  

Вопрос

Мне нужно изменить функцию lm (или, в конечном итоге, loess), чтобы я мог использовать ее в geom_smooth (или stat_smooth) ggplot2.

Например, вот как обычно используется stat_smooth:

родовое слово

Я хотел бы определить настраиваемую функцию lm2 для использования в качестве значения параметра method в stat_smooth, чтобы я мог настроить ее поведение.

родовое слово

Обратите внимание, что я использовал method='lm2' в качестве параметра в stat_smooth. Когда я выполняю этот код, я получаю сообщение об ошибке:

<цитата>

Ошибка в eval (expr, envir, enclos): 'nthcdr' нужен список для CDR вниз

Что я не очень хорошо понимаю. Метод lm2 очень хорошо работает, когда выполняется вне кода stat_smooth. Я немного поигрался с этим, и у меня были разные типы ошибок, но, поскольку мне не нравятся инструменты отладки R, мне трудно их отлаживать. Честно говоря, я не понимаю, что нужно вставить в вызов return().

Это было полезно?

Решение

Есть некоторая странность в использовании ... в качестве аргумента в вызове функции, которую я не совсем понимаю (это как-то связано с ... тем, что это объект типа списка).

Вот версия, которая работает, принимая вызов функции как объект, устанавливая функцию для вызова на lm и затем оценивая вызов в контексте нашего собственного вызывающего.Результатом этой оценки является наше возвращаемое значение (в R значение последнего выражения в функции - это возвращаемое значение, поэтому нам не нужен явный код генерирования кода).

родовое слово

Если вы хотите добавить аргументы к вызову lm, вы можете сделать это следующим образом:

родовое слово

Если вы хотите передать аргументы в foo перед вызовом lm, вы можете сделать это следующим образом

родовое слово

Кстати, return и geom_smooth передают любые дополнительные аргументы функции сглаживания, поэтому вам не нужно создавать собственную функцию, если вам нужно только установить некоторые дополнительные аргументы

родовое слово
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top