0

My data looks something like this:

patient <- c(1,2,3,4,5) outcome1 <- c(rnorm(5)) outcome2 <- c(rnorm(5)) outcome3 <- c(rnorm(5)) outcome4 <- c(rnorm(5)) outcome5 <- c(rnorm(5)) exposure1 <- c(rnorm(5)) exposure2 <- c(rnorm(5)) exposure3 <- c(rnorm(5)) exposure4 <- c(rnorm(5)) exposure5 <- c(rnorm(5)) covariate1 <- c(rnorm(5)) covariate2 <- c(rnorm(5)) data <- data.frame(patient <- patient, outcome1 <- outcome1, outcome2 <- outcome2, outcome3 <- outcome3, outcome4 <- outcome4, outcome5 <- outcome5, exposure1 <- exposure1, exposure2 <- exposure2, exposure3 <- exposure3, exposure4 <- exposure4, exposure5 <- exposure5, covariate1 <- covariate1, covariate2 <- covariate2) 

I am using the following function to conduct a patrial correlation test and spit out the outcome. This function works great when subsetting a value at a time.

pcor.fit <- function(outcome, exposure, data, cov.columns){ temp <- pcor.test(data[,outcome], data[,exposure], as.matrix(data[,cov.columns])) temp1 <- as.numeric(temp["estimate"]) temp2 <- as.numeric(temp["estimate"]/temp["statistic"]) ## se temp3 <- as.numeric(temp["p.value"]) return(c(outcome = outcome, exposure = exposure, estimate=temp1, se=temp2, p=temp3)) } 

The only problem is that I want to get partial combinations of all possible combinations of outcome a exposure. In this case it would be 25 (5 exposure and 5 outcomes). therefore I ran a loop to run through the combination of outcome and exposures, where outcome and exposures are lists of the variable names.

for (i in outcome) { for (j in exposure) { print(pcor.fit(outcome = i, exposure = j, data = data, cov.columns = covariates)) } } 

This works fine in printing the results, but how can I save the results of my function and loop? I assume I need to create an empty matrix first?

3
  • (1) What packages did you use? pcor.test is no standard function. (2) You are looping over outcome and exposure but there are only outcome1 to outcome5 and exposure1 to exposure5 defined. How are they connected? The same for covariates. In this form this is no reproducible example. Commented Sep 8, 2021 at 21:39
  • One more thing: How does your expected output look like? Commented Sep 8, 2021 at 21:44
  • @MartinGal {ppcor} Commented Sep 9, 2021 at 14:28

1 Answer 1

2

If I have understood correctly this answer would provide a reproducible question along with answer that you are looking for.

library(ppcor) outcome <- grep('outcome', names(data), value = TRUE) exposure <- grep('exposure', names(data), value = TRUE) covariates <- grep('covariate', names(data), value = TRUE) pcor.fit <- function(outcome, exposure, data, cov.columns){ temp <- pcor.test(data[,outcome], data[,exposure], as.matrix(data[,cov.columns])) temp1 <- as.numeric(temp["estimate"]) temp2 <- as.numeric(temp["estimate"]/temp["statistic"]) ## se temp3 <- as.numeric(temp["p.value"]) return(data.frame(outcome, exposure, estimate=temp1, se=temp2, p=temp3)) } result <- vector('list', length(outcome) * length(exposure)) k <- 0 for (i in outcome) { for (j in exposure) { k <- k + 1 result[[k]] <- pcor.fit(outcome = i, exposure = j, data = data, cov.columns = covariates) } } result <- do.call(rbind, result) result # outcome exposure estimate se p #1 outcome1 exposure1 0.224018424 0.6891356 0.77598158 #2 outcome1 exposure2 0.615505519 0.5572939 0.38449448 #3 outcome1 exposure3 -0.555796882 0.5878307 0.44420312 #4 outcome1 exposure4 -0.261538517 0.6824945 0.73846148 #5 outcome1 exposure5 0.345310335 0.6636116 0.65468966 #6 outcome2 exposure1 -0.664104445 0.5286612 0.33589556 #7 outcome2 exposure2 -0.584807063 0.5735855 0.41519294 #... #... 

data

set.seed(123) data <- data.frame(patient = c(1,2,3,4,5), outcome1 = rnorm(5), outcome2 = rnorm(5), outcome3 = rnorm(5), outcome4 = rnorm(5), outcome5 = rnorm(5), exposure1 = rnorm(5), exposure2 = rnorm(5), exposure3 = rnorm(5), exposure4 = rnorm(5), exposure5 = rnorm(5), covariate1 = rnorm(5)) 
Sign up to request clarification or add additional context in comments.

Comments

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.