@@ -146,9 +146,13 @@ combine_all_mrresults <- function(
146146 het <- het [, c(" id.exposure" , " id.outcome" , " method" , " Q" , " Q_df" , " Q_pval" )]
147147
148148 # Convert all factors to character
149- res [] <- lapply(res , function (x ) if (is.factor(x )) as.character(x ) else x )
150- het [] <- lapply(het , function (x ) if (is.factor(x )) as.character(x ) else x )
151- sin [] <- lapply(sin , function (x ) if (is.factor(x )) as.character(x ) else x )
149+ factors_to_character <- function (df ) {
150+ df [] <- lapply(df , function (x ) if (is.factor(x )) as.character(x ) else x )
151+ df
152+ }
153+ res <- factors_to_character(res )
154+ het <- factors_to_character(het )
155+ sin <- factors_to_character(sin )
152156
153157 sin <- sin [grep(" [:0-9:]" , sin $ SNP ), ]
154158 sin $ method <- " Wald ratio"
@@ -285,10 +289,10 @@ combine_all_mrresults <- function(
285289power_prune <- function (dat , method = 1 , dist.outcome = " binary" ) {
286290 # dat[,c("eaf.exposure","beta.exposure","se.exposure","samplesize.outcome","ncase.outcome","ncontrol.outcome")]
287291 if (method == 1 ) {
288- L <- NULL
289292 id.sets <- paste(split_exposure(dat )$ exposure , split_outcome(dat )$ outcome )
290293 id.set.unique <- unique(id.sets )
291294 dat $ id.set <- as.numeric(factor (id.sets ))
295+ L <- vector(" list" , length(id.set.unique ))
292296 for (i in seq_along(id.set.unique )) {
293297 # print(i)
294298 print(paste(
@@ -334,7 +338,7 @@ power_prune <- function(dat, method = 1, dist.outcome = "binary") {
334338 dat1 <- dat1 [nexp == nexp [1 ], ]
335339 L [[i ]] <- dat1
336340 }
337- dat <- do.call( rbind , L )
341+ dat <- data.table :: rbindlist( L )
338342 dat <- dat [, ! names(dat1 ) %in% c(" id.set" , " id.subset" )]
339343 # if (drop.duplicates == T) {
340344 # dat<-dat[dat$power.prune=="keep",]
@@ -343,17 +347,17 @@ power_prune <- function(dat, method = 1, dist.outcome = "binary") {
343347 }
344348
345349 if (method == 2 ) {
346- L <- NULL
347350 id.sets <- paste(split_exposure(dat )$ exposure , split_outcome(dat )$ outcome )
348351 id.set.unique <- unique(id.sets )
349352 dat $ id.set <- as.numeric(factor (id.sets ))
353+ L <- vector(" list" , length(id.set.unique ))
350354 for (i in seq_along(id.set.unique )) {
351355 dat1 <- dat [id.sets == id.set.unique [i ], ]
352356 # unique(dat1[,c("exposure","outcome")])
353357 id.subset <- paste(dat1 $ exposure , dat1 $ id.exposure , dat1 $ outcome , dat1 $ id.outcome )
354358 id.subset.unique <- unique(id.subset )
355359 dat1 $ id.subset <- as.numeric(factor (id.subset ))
356- L1 <- NULL
360+ L1 <- vector( " list " , length( id.subset.unique ))
357361 for (j in seq_along(id.subset.unique )) {
358362 # print(j)
359363 print(paste(" identifying best powered summary set: " , id.subset.unique [j ], sep = " " ))
@@ -405,12 +409,12 @@ power_prune <- function(dat, method = 1, dist.outcome = "binary") {
405409 # dat2$power<-power
406410 L1 [[j ]] <- dat2
407411 }
408- L [[i ]] <- do.call( rbind , L1 )
412+ L [[i ]] <- data.table :: rbindlist( L1 )
409413 }
410- dat2 <- do.call( rbind , L )
414+ dat2 <- data.table :: rbindlist( L )
411415 dat2 <- dat2 [order(dat2 $ id.set , dat2 $ iv.se ), ]
412416 id.sets <- unique(dat2 $ id.set )
413- id.keep <- NULL
417+ id.keep <- vector( " list " , length( id.sets ))
414418 for (i in seq_along(id.sets )) {
415419 # print(i)
416420 # print(id.sets[i])
@@ -450,6 +454,6 @@ size.prune <- function(dat) {
450454 dat $ ncase [is.na(dat $ ncase )] <- dat $ samplesize [is.na(dat $ ncase )]
451455 dat <- dat [order(dat $ ncase , decreasing = TRUE ), ]
452456 id.expout <- paste(dat $ exposure , dat $ outcome )
453- id.keep <- id.expout [! duplicated(paste (dat $ exposure , dat $ originalname.outcome ))]
457+ id.keep <- id.expout [! duplicated(data.frame (dat $ exposure , dat $ originalname.outcome ))]
454458 dat <- dat [id.expout %in% id.keep , ]
455459}
0 commit comments