Самодельная функция работает в тесте, но не для моего фактического набора данных - PullRequest
0 голосов
/ 26 ноября 2018

Я работаю с функциями.Я написал функцию для базальной области

 ba <- function(dbh,na.rm) {
 stopifnot(is.numeric(dbh))
  answer <- dbh^2*(0.005454)
  return(answer)
  }

Функция работает с тестовым вектором.Сейчас я пытаюсь сделать некоторые выводы из набора данных, которые у меня есть.

(копирование и вставка непосредственно из R)

plot.summary <- trees %>% group_by(MU, Plot, Inv) %>% summarize(year = first(Year), arithemtic.mean = my.mean(dbh, na.rm = TRUE), quadratic.mean = my.q.mean(dbh, na.rm = TRUE), var = my.var(dbh, na.rm = TRUE), n.trees = n())

(измененный интервал для упрощения чтения)

plot.summary <- trees %>% group_by(MU, Plot, Inv) %>% 
summarize(year = first(Year), arithemtic.mean = my.mean(dbh, na.rm = TRUE),
quadratic.mean = my.q.mean(dbh, na.rm = TRUE), var = my.var(dbh, na.rm = TRUE), 
n.trees = n())

Когда я запускаю, он говорит

Error in summarise_impl(.data, dots) : 
Column `basal.area` must be length 1 (a summary value), not 19

Я не уверен почему.Набор данных имеет только 18 столбцов.Моя команда прекрасно работает, если я не включаю базальную часть области.

Я не уверен, что мне не хватает

Спасибо за любую помощь!

1 Ответ

0 голосов
/ 26 ноября 2018

Переменные, на которые вы ссылаетесь в функции group_by, отсутствуют в наборе данных trees, поэтому я взял на себя смелость и создал воспроизводимый пример, который, как мы надеемся, соответствует вашим потребностям.

Предполагая, что вы хотелидля группировки по переменной, такой как Height, вот рабочий пример:

plot.summary <- trees %>% 
  group_by(Height) %>% 
  summarise(mean.basal.area = mean(ba(Girth)),
    n.trees = n())

В приведенном выше примере ваша функция ba заключена в mean.Это приводит к средней базальной площади для набора значений обхвата, которые имеют одинаковую высоту.

Это то, что вы хотите?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...