【发布时间】:2016-04-15 10:41:46
【问题描述】:
我正在使用dplyr 过滤数据框
DF <- structure(list(Category = structure(c(1L, 1L, 1L), .Label = "A", class = "factor"), Balance = c(1000L, 3000L, 2500L)), .Names = c("Category",
"Balance"), class = "data.frame", row.names = c(NA, -3L))
通过以下方式:
DF %>%
filter(Category == 'A') %>%
select(Balance) %>%
sum(., na.rm=T)
一切正常,直到我使用的过滤器返回一个空数据框,例如使用filter(Category == 'B') 返回
<0 rows> (or 0-length row.names)
发生这种情况时,我想返回 0,但我的管道坏了。我尝试使用ifelse,但我的语法不正确:
DF %>%
filter(Category == 'B') %>%
select(Balance) %>% ifelse(nrow(.)==0, 0, sum(., na.rm=T))
另一种可能性是使用tryCatch,但我不确定如何将其合并到管道中。
总结一下,我想数据框为空的时候返回0,有其他值的时候求和。
有什么办法吗?
【问题讨论】:
标签: r if-statement exception-handling dataframe dplyr