#r #dplyr
#r #dplyr
Вопрос:
Я применяю пользовательскую функцию в do (), но в некоторых случаях мне не нужно выполнять вычисления (чтобы перехватить log (<0)). Что должна возвращать моя функция? NULL nor () не помогает.
my_function<-function(data) {
if(data$a<0) {
return(NULL) #?????????
} else {
return(data.frame(ln=log(data$a)))
}
}
table<-data.frame(a=seq(10,-10,by=-1),b=seq(0,20,by=1))
result<-table %>%
group_by(b) %>%
do(
my_function(data=.)
)
Комментарии:
1. В этом случае, возможно, вам не нужно
do
, чтобы для вас работала таблица %>% filter(a >0) %>% mutate(ln=log(a))2. В данном случае да, но это небольшой пример, реальный код сложнее.
Ответ №1:
my_function<-function(data) {
if(data$a<0) {
return(data.frame(NULL))
} else {
return(data.frame(ln=log(data$a)))
}
}
Комментарии:
1. Или просто
data.frame()