Saltar al contenido

¿Cómo usar la instrucción switch en las funciones R?

Recuerda que en las ciencias un error puede tener más de una soluciones, por lo tanto aquí te mostramos lo mejor y más óptimo.

Solución:

Bien, switch probablemente no estaba destinado a funcionar así, pero puedes:

AA = 'foo'
switch(AA, 
foo=
  # case 'foo' here...
  print('foo')
,
bar=
  # case 'bar' here...
  print('bar')    
,

   print('default')

)

… cada caso es una expresión, generalmente algo simple, pero aquí uso un bloque rizado para que pueda introducir el código que desee allí …

Esas diversas formas de cambiar

# by index
switch(1, "one", "two")
## [1] "one"


# by index with complex expressions
switch(2, "one", "two")
## [1] "two"


# by index with complex named expression
switch(1, foo="one", bar="two")
## [1] "one"


# by name with complex named expression
switch("bar", foo="one", bar="two")
## [1] "two"

Espero que este ejemplo ayude. Puede usar las llaves para asegurarse de que tiene todo incluido en el tipo de cambiador de conmutadores (lo siento, no conozco el término técnico, pero el término que precede al signo = cambia lo que sucede). Pienso en Switch como un grupo más controlado de if () else declaraciones.

Cada vez que la función del interruptor es la misma, pero el comando que proporcionamos cambia.

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!")
)

Aquí está dentro de una función:

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")

Te invitamos a añadir valor a nuestro contenido colaborando tu veteranía en las observaciones.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *