El programa que quiero hacer obtiene un número entero como entrada y la salida es el día de la semana correspondiente al número entero (ej. Entrada: x <- 3L, Salida: Martes). Debo usar la función switch() para esto, pero siempre obtengo "Error: inesperado ',' en". A continuación se muestra el programa que he hecho. ¡Gracias!
x <- 5L week_num2 <- switch(x, 1L = "Sunday", 2L = "Monday", 3L = "Tuesday", 4L = "Wednesday", 5L = "Thursday", 6L = "Friday", 7L = "Saturday", stop("Invalid input") ) week_num2La instrucción switch() en R se analiza como una llamada de función. Dado que no puede tener nombres de argumentos como 1L , requiere que la declaración se escriba de manera diferente. Utiliza todos los valores del 1 al 7, por lo que puede omitir el nombre del argumento:
week_num2 <- switch(x, "Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday" ) (Probablemente sería una buena idea incluir el número como comentario, para que sea más fácil de leer). Este formulario no admite un valor predeterminado; devolverá NULL si no le da un número dentro del rango.
La otra forma de usarlo (que recomiendo) es usar una expresión con valor de carácter, por ejemplo
week_num2 <- switch(as.character(x), "1" = "Sunday", "2" = "Monday", "3" = "Tuesday", "4" = "Wednesday", "5" = "Thursday", "6" = "Friday", "7" = "Saturday", stop("Invalid input") )De esta forma, se utiliza un argumento sin nombre como valor predeterminado.