【发布时间】:2018-05-17 09:00:29
【问题描述】:
让我分享一个我正在尝试做的示例,因为标题可能不像我希望的那样清晰。这没有可重现的代码,但如果有帮助,我可以添加一个可重现的示例:
library(dplyr)
if(this_team != "") {
newdf <- mydf %>%
filter(team == this_team) %>%
mutate(totalrows = nrow(.)) %>%
group_by(x1, y1) %>%
summarize(dosomestuff)
} else {
newdf <- mydf %>%
filter(firstname == this_name & lastname == that_name) %>%
mutate(totalrows = nrow(.)) %>%
group_by(x1, y1) %>%
summarize(dosomestuff)
}
我正在 R 中创建一个函数,该函数对 mydf 数据帧进行一些数据操作。如果我将值传递给函数的 team_name 参数,那么我想使用“团队”列过滤数据框。如果我不将值传递给 team_name 参数,则默认为 "",我改为传递 this_name 和 that_name 的值,它们对应于 mydf 中的 'firstname' 和 'lastname' 列。
有没有更好的方法来做到这一点,而不必在两个单独的 if else 语句中再次创建整个 dplyr 管道?我的实际代码流水线每条都超过 4 行,因此必须重现这样的代码非常令人沮丧。
【问题讨论】: