Сопоставление дополнительных аргументов с purrr - PullRequest
0 голосов
/ 31 января 2019

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

Пример данных:

library(dplyr)
library(purrr)
nested<-iris %>% 
  group_by(Species) %>% 
  nest()

Функция для реализации:

lm_mod<-function(df,xname,yname){
 xname<-deparse(substitute(xname))
 yname<-deparse(substitute(yname))
 f1<-as.formula(paste(yname,"~",xname))
 do.call(lm,list(data=quote(df),f1))
  }

Одна из нескольких попыток:

map(nested$data,lm_mod(Sepal.Length,Petal.Length))

Ошибка:

Ошибка в статистике :: model.frame (формула = df, данные = ~Petal.Length, drop.unused.levels = TRUE): объект «Sepal.Length» не найден

Похоже, что моя формула интерпретируется как данные.Как я могу лучше всего реализовать это?

1 Ответ

0 голосов
/ 31 января 2019

Это исправило это: проблема была с моим определением функции, которое я позже отредактировал, чтобы явно указать аргумент данных в вызове lm, и спасибо @MrFlick за указание на это:

lm_mod<-function(df,xname,yname){
 xname<-deparse(substitute(xname))
 yname<-deparse(substitute(yname))
 f1<-as.formula(paste(yname,"~",xname))
 do.call(lm,list(data=quote(df),f1))
  }

map(nested$data,lm_mod,Sepal.Length,Petal.Length)
...