应该返回dplyr :: do()以跳过大小写的函数

我在do()中应用用户定义的函数,但在某些情况下我不需要进行计算(捕获日志(< 0)).我的功能应该返回什么? NULL也没有()没有帮助.

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=.)
    )

最佳答案

my_function<-function(data) {
  if(data$a<0) {
    return(data.frame(NULL)) 
  } else {
    return(data.frame(ln=log(data$a)))
  }
}
点赞