首页 > 解决方案 > 创建一个使用 dplyr 的函数,其中将参数传递给过滤器

问题描述

我已经对我的数据集进行了分析,但格式很长,并且想编写一个函数来自动化我必须多次编写的部分。

#Null_proband outputs for disease tables
null.proband <- dbdata %>%
  filter(Proband == TRUE & Fam.state.mainmut.MutGroup == "Null") %>%
  group_by(ICD_Grouping) %>%
  summarise(n_distinct(PID),
            n_distinct(Fam.state.mainmut.FID),
            n(),
            median(AgeOfOnset))

#Column names for null_proband
colnames(null.proband) = c("ICD_Grouping", "proband_uniq(PID)", "proband_uniq(FID)", "proband_freq(PID)","proband_median(ageofonset)")

我对不同的过滤集重复了多次,我想知道是否可以有一个带有 if 子句选择的基本函数

f1 <- function(x, pop = c("proband", "nonproband", "carrier", "unknown", "all), mut = ("null", "mis", "unk", "all"))

是我希望如何设置函数然后是基本 dplyr 进程

{ pop.mut <- dbdata %>%
filter(defined by arguments) %>%
group_by(ICD_Grouping) %>%
summarise(pop_uniqPID = n_distinct(PID),
          pop_uniqFID = n_distinct(FID),
          pop_freqPID = n(),
          pop_medianAgeOfOnset = median(AgeOfOnset))
}

然后 if 子句描述过滤器应该取决于参数,例如

if (pop = "proband" & mut = "null") { filter(Proband == TRUE & Fam.state.mainmut.Mutgroup == "Null") }

并为所有组合编写for循环,或者我可以为带有参数的过滤器的一半编写for循环,还是只为一个参数过滤一次然后为第二个参数过滤第二次?

标签: rfunctiondplyr

解决方案


推荐阅读