r - 创建一个使用 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循环,还是只为一个参数过滤一次然后为第二个参数过滤第二次?
解决方案
推荐阅读
- python - Multiproces 具有可迭代和可迭代参数的函数
- database - 如何保存更改?
- pandas - 使用 pyspark 将 base64 字符串转换为图像时出错
- python - 将具有 12 小时 AM/PM(无零填充)的 DateTime 转换为 24 小时格式
- logstash-jdbc - 如何使用 logstash 连接 presto 以从 Cassandra DB 获取数据
- dynamics-crm - 将数据从 Dynamics CRM 加载到 SQL Server
- arrays - 无法在 js 函数调用的 go 函数中返回数组。恐慌:ValueOf:无效值
- http - 发送连接升级后如何在golang中将客户端http连接升级到websockets
- java - Scala Iterable[(String, Long)] 到 SortedMap[String,Long] 或 TreeMap[String, Long] 按值降序排序
- java - 为什么两个具有相同值的原始双精度数具有两个不同的identityHashCode?