Надеюсь, этот пример поможет. Вы можете использовать фигурные фигурные скобки, чтобы убедиться, что у вас есть все, заключенное в переключателе переключателя переключателя (извините, не знаю технического термина, но термин, который предшествует знаку =, который меняет то, что происходит). Я думаю, что коммутатор является более контролируемой связью операторов if() {} else {}
.
Каждый раз, когда функция коммутатора такая же, но команда, мы поставляем изменения.
do.this <- "T1"
switch(do.this,
T1={X <- t(mtcars)
colSums(mtcars)%*%X
},
T2={X <- colMeans(mtcars)
outer(X, X)
},
stop("Enter something that switches me!")
)
#########################################################
do.this <- "T2"
switch(do.this,
T1={X <- t(mtcars)
colSums(mtcars)%*%X
},
T2={X <- colMeans(mtcars)
outer(X, X)
},
stop("Enter something that switches me!")
)
########################################################
do.this <- "T3"
switch(do.this,
T1={X <- t(mtcars)
colSums(mtcars)%*%X
},
T2={X <- colMeans(mtcars)
outer(X, X)
},
stop("Enter something that switches me!")
)
Здесь находится внутри функции:
FUN <- function(df, do.this){
switch(do.this,
T1={X <- t(df)
P <- colSums(df)%*%X
},
T2={X <- colMeans(df)
P <- outer(X, X)
},
stop("Enter something that switches me!")
)
return(P)
}
FUN(mtcars, "T1")
FUN(mtcars, "T2")
FUN(mtcars, "T3")
есть способ сделать это без сравнения со строками? что кажется весьма неэффективным. – Julius