Earlier, I asked how to create [global environment objects from a tibble 1, which I have been able to do.
Now, I want to take the objects generated from the tibble to use in a function similar to this:
positives = function(pos_tibble){
  data_tibble %>%
  filter(str_detect(Animal_ID, "[:digit:]{2,3}")) %>%
  mutate(Positive = if_else(U_mL> cutoff(x), TRUE, FALSE))
}
where cutoff(x) is as follows:
cutoff <- function(x){
  if_else("Species_ab" == "Mouse" & "Protein" == "GP", return(Mouse_IgG_GP_cutoff), 
          (if_else("Species_ab" == "Mouse" & "Protein" == "NP", return(Mouse_IgG_NP_cutoff),
                   (if_else("Species_ab" == "Rat" & "Protein" == "GP", return(Mouse_IgG_GP_cutoff),
                            return(Rat_IgG_NP_cutoff))))))
}
so that pos_tibble would look like this:
# Groups:   Species_ab, Antibody, Protein, Positive [6]
  Animal_ID Species_ab Antibody Protein   U_mL Positive
  <chr>     <chr>      <chr>    <chr>    <dbl> <lgl>   
1 35        Mouse      IgG      GP      128.   TRUE    
2 39        Mouse      IgG      GP        4.75 FALSE   
3 43        Mouse      IgG      GP       NA    FALSE   
4 186       Mouse      IgG      NP        5.57 FALSE   
5 187       Mouse      IgG      NP        8.25 FALSE   
6 44        Rat        IgG      GP       NA    FALSE   
7 45        Rat        IgG      GP        9.49 TRUE    
8 322       Rat        IgG      NP       NA    FALSE   
9 323       Rat        IgG      NP       NA    FALSE 
I have tried mapping cutoff() multiple different ways, and cannot get it to select based off the conditions. It only repeats the first value matched.
by(neg_tibble, seq_len(nrow(neg_tibble)), cutoff)   
seq_len(nrow(neg_tibble)): 1
[1] 28.20336
----------------------------------------------------------- 
seq_len(nrow(neg_tibble)): 2
[1] 28.20336
----------------------------------------------------------- 
seq_len(nrow(neg_tibble)): 3
[1] 28.20336
----------------------------------------------------------- 
seq_len(nrow(neg_tibble)): 4
[1] 28.20336
map(seq_len(nrow(neg_tibble)), cutoff)  
[[1]]
[1] 28.20336
[[2]]
[1] 28.20336
[[3]]
[1] 28.20336
[[4]]
[1] 28.20336
map_dbl(seq_len(nrow(neg_tibble)), cutoff)
[1] 28.20336 28.20336 28.20336 28.20336
cutoff(neg_tibble)
[1] 28.20336 
apply(neg_tibble,1,cutoff)
[1] 28.20336 28.20336 28.20336 28.20336
The above were taken from various other questions a, b, c, d
At the end of the day, I think map is what I want, but I need it to go through all my options, not repeat the first one.
Additionally, I would love any recommendations for online resources (so I can not post as many questions!!!). I have been using r4ds and software carpentry which have been helping a lot, though I'd like something a bit more comprehensive. I'm in the last two-ish months of my PhD program and am really only now getting into R a little bit of python to compile and clean all of my data into one a single tidy file, which I can then quickly run basic stats on (but I need it totally cleaned to get to that point).
Thank you!
EDIT dput of a small sample of pos_tibble
    > dput(pos_tibble[c(4:6, 300:301, 500:501, 700:701),])
structure(list(Animal_ID = c("35", "39", "43", "Blank_Use", "2x Blank", 
"525", "526", "44", "45"), Species_ab = c("Mouse", "Mouse", "Mouse", 
"Mouse", "Mouse", "Mouse", "Mouse", "Rat", "Rat"), Antibody = c("IgG", 
"IgG", "IgG", "IgG", "IgG", "IgG", "IgG", "IgG", "IgG"), Protein = c("GP", 
"GP", "GP", "NP", "NP", "NP", "NP", "NP", "NP"), U_mL = c(128.424549479298, 
4.75300605155077, NA, 11.2504537822992, 78.8606956731523, 39.7199412048613, 
NA, NA, NA)), row.names = c(NA, -9L), class = c("tbl_df", "tbl", 
"data.frame"))
Created on 2021-10-08 by the reprex package (v2.0.1)
 
    