孟德尔随机化找暴露因素的代码总是报错,该怎么办
options(ieugwasr_api = 'gwas-api.mrcieu.ac.uk/')
#加载函数:直接运行即可,不需要改参数。运行完看环境里是否出现functions名为find_exposure
find_exposure <- function(outcome_id=NULL,
outcome_file=NULL,
outcome_full=NULL,
outcome_name,
num1=1,
num2=18115,
pval=5e-8,
clump_r2=0.001,
clump_kb=10000,
proxies=TRUE,
pop="European",
renew_id=FALSE,
action=3,
save_path){
if(renew_id){
ao <- TwoSampleMR::available_outcomes()
}else{
}
mrbase_id <- ao%>%
dplyr::arrange(.,id)%>%
subset(.,population==pop)
eqtl_id <- mrbase_id[grep("eqtl-a-*",mrbase_id$id),]
mrbase_id <- mrbase_id[!mrbase_id$id %in% eqtl_id$id,]
if(!is.null(outcome_id)){
mrbase_id <- mrbase_id[!mrbase_id$id %in% outcome_id,]
}
id <- mrbase_id %>%
dplyr::arrange(.,id)%>%
dplyr::select(id)%>%
dplyr::filter(id != c("ieu-a-819"))
for (i in num1:num2) {
exp <- TwoSampleMR::extract_instruments(outcomes = id$id[i],
p1 = pval,
r2 = clump_r2,
kb = clump_kb,
clump = TRUE)
print(paste0(i,": ",id$id[i]))
if(!is.null(exp)){
if(!is.null(outcome_id)){
out <- TwoSampleMR::extract_outcome_data(
snps=exp$SNP,
outcomes=outcome_id,
proxies = proxies)
}else if(!is.null(outcome_file)){
outcome_full <- readRDS(outcome_file)
out <- merge(outcome_full,exp,by="SNP")%>%
dplyr::select(SNP,grep("outcome",colnames(.)))
}else{
out <- merge(outcome_full,exp,by="SNP")%>%
dplyr::select(SNP,grep("outcome",colnames(.)))
}
if(!is.null(out)){
dat <- TwoSampleMR::harmonise_data(exposure_dat = exp,
outcome_dat = out,
action = action)
dat <- subset(dat,dat$mr_keep==TRUE)
if(nrow(dat)!=0){
library(TwoSampleMR)
res <-GagnonMR::primary_MR_analysis(dat=dat)
if(nrow(res)!=0){
print(res)
if(res$pval< 0.05){
print(res)
print(i)
utils::write.table(res, file = paste0(save_path,"/",outcome_name,"_MRbase_id.MRres"), quote=FALSE, col.names = TRUE, append = TRUE,row.names = FALSE)
}
}
}
}
}
}
}
########################################调用函数:修改参数后运行即可
find_exposure(outcome_id="ebi-a-GCST90018875",
outcome_file=NULL,
outcome_full=NULL,
outcome_name="lung cancer",
num1=1,
num2=18115,
pval=5e-8,
clump_r2=0.001,
clump_kb=10000,
proxies=TRUE,
pop="European",
renew_id=FALSE,
action=3,
save_path="D:xxxxxx")
错误于if (nrow(d) == 0) return(NULL): 参数长度为零
Called from: TwoSampleMR::extract_instruments(outcomes = id$id[i], p1 = pval,
r2 = clump_r2, kb = clump_kb, clump = TRUE)
Browse[1]