Hello,
I have 2 similar workflows and the first is working but the 2nd is not. I am looking for help with getting the 2nd to work but also in understanding why the 1st and 2nd are different.
Workflow 1 (this works as intended):
- have tibble with values for mean and standard deviation
- have function that draws from rnorm
- use rowwise() and mutate to generate draws from each pair of mu/sd by row and store in new column, then unnest
Workflow 2 (this one doesn't work)
- have tibble with various values of 2 descriptive variables and 1 variable with values of interest
- have function that filters a tibble by descriptive variables then draws randomly from the values of interest column
- use rowwise() and mutate to generate draws from values column after filtering by each pair of var_a and var_b by row and store in new column, then unnest
example below:
library(tidyverse)
#workkflow 1 below (this one works)
#tibble with mus and sigmas
p_tbl <- tibble(
mu = c(3, 5, 4, 3),
sigma = c(.5, .8, .3, .6)
)
#function to draw from mu and sigma
draw_fcn <- function(tbl, n, mu, sigma) {
draws <- rnorm(n = n, mean = mu, sd = sigma)
return(tibble(draws))
}
#use rowwise and mutate and fcn to store draws in new col then unnest it
resultant_tbl <- p_tbl %>%
rowwise() %>%
mutate(results = list(draw_fcn(
n = 5,
mu = mu,
sigma = sigma
))) %>%
unnest()
#workkflow 2 below (this one doesn't work)##################################
#tibble with descriptive vars a and b and values of interest
v_tbl <- tibble(
var_a = rep(c("A", "B", "C"), 2),
var_b = rep(c("X", "Y", "Z"), 2)
) %>%
expand.grid() %>%
mutate(values = runif(n = 36, min = 0, max = 10))
#fcn to filter and then draw randomly from remaining values of interest
other_draw_fcn <- function(tbl, n, filter_val_1, filter_val_2) {
temp <- tbl %>%
filter(var_a == filter_val_1) %>%
filter(var_b == filter_val_2)
store <- sample(x = temp$values, size = n, replace = TRUE)
return(tibble(store))
}
#trying same workflow as with method 1 to apply function across each combination of var_a and var_b rowwise [doesn't work]
other_resultant_tbl <- v_tbl %>%
rowwise() %>%
mutate(results = list(other_draw_fcn(
n = 5,
filter_val_1 = var_a,
filter_val_2 = var_b
))) %>%
unnest()
#testing that function works on its own (it does)
other_draw_fcn(tbl = v_tbl, n = 5, filter_val_1 = "A", filter_val_2 = "Y")
Thank you for any help you can provide!