Keith W. Larson
Keith W. Larson

Reputation: 1573

Output function results to a vector

I have created a function to call a function on each row in a dataset. I would like to have the output as a vector. As you can see below the function outputs the results to the screen, but I cannot figure out how to redirect the output to a vector that I can use outside the function.

n_markers <- nrow(data)
p_values <-rep(0, n_markers)

test_markers <- function()
   {
   for (i in 1:n_markers)
      {
      hets  <- data[i, 2]
      hom_1 <- data[i, 3]
      hom_2 <- data[i, 4]   
      p_values[i] <- SNPHWE(hets, hom_1, hom_2)
      }
      return(p_values)
   }

test_markers()

Upvotes: 1

Views: 26852

Answers (1)

nograpes
nograpes

Reputation: 18323

Did you just take this code from here? I worry that you didn't even try to figure it out on your own first, but hopefully I am wrong.

You might be overthinking this. Simply store the results of your function in a vector like you do with other functions:

stored_vector <- test_markers()

But, as mentioned in the comments, your function could probably be reduced to:

stored_vector <- sapply(1:nrow(data), function(i) SNPHWE(data[i,2],data[i,3],data[i,4]) )

Upvotes: 4

Related Questions