Я так думаю, и, возможно, это могло бы помочь.Если я хорошо понял, вам нужно добавить новый столбец в существующий набор данных (возможно, data.frame
) с методом как условие:
# some fake data
data <- data.frame(a = c(1,3,5))
g <- function(method){
if (method == 1) {
data %>% mutate(boot1 = 'some_formula1')}
else{
data %>% mutate(boot1 = 'some_formula2')
}
}
g(2)
a boot1
1 1 some_formula2
2 3 some_formula2
3 5 some_formula2
g(1)
a boot1
1 1 some_formula1
2 3 some_formula1
3 5 some_formula1
Вы также можете поместить его в dplyr
цепочка, как вы сказали, может быть так, с if_else
:
method <- 1
data %>% mutate(boot1 = if_else( method == 1,'some_formula1','some_formula2' ))
или с case_when
:
data %>% mutate(boot1 = case_when(method == 1 ~ 'some_formula1',
method == 2 ~ 'some_formula2'))
Несмотря на то, что они кажутся медленнее, глядя на это (добавлено также ifelse
):
Unit: microseconds
expr min lq mean median uq max neval cld
if 581.548 594.774 636.6556 606.7210 642.9875 980.907 100 a
if_else 729.174 747.734 852.2972 772.0545 834.3475 5406.721 100 bc
ifelse 701.441 716.587 793.0887 743.0400 793.6010 1486.934 100 b
case_when 858.454 876.161 931.2391 900.2675 936.5345 1602.134 100 c