myfunction <- function(x) {
switch(x,
print("one"),
print("two"),
print("three"))}
myfunction(1)
## [1] "one"
Edit: Jak wspomniano w komentarzach, metoda ta nie jest ocena wartości, które są wpisane, a wykorzystuje je jako wskaźnik. Działa to w twoim przypadku, ale nie zadziała, jeśli instrukcje zostaną zmienione (zobacz odpowiedź @ Josha dla lepszego podejścia).
Tak czy inaczej, nie sądzę, że switch
jest odpowiednią funkcją do użycia w tym przypadku, ponieważ jest przeznaczona głównie do przełączania między różnymi alternatywami, podczas gdy w twoim przypadku w zasadzie działa się w kółko tą samą funkcją. Dlatego dodanie dodatkowych instrukcji dla każdej alternatywy wydaje się zbyt dużą ilością pracy (jeśli, na przykład, chciałbyś wyświetlić 20 różnych liczb, musisz napisać 20 różnych instrukcji).
Zamiast tego można spróbować pakiet english
który pozwoli na wyświetlanie jak wiele liczb, jak można określić w rachunku ifelse
library(english)
myfunction2 <- function(x) {
ifelse(x %in% 1:3,
as.character(as.english(x)),
"default")}
myfunction2(1)
## [1] "one"
myfunction2(4)
## [1] "default"
Alternatywnie, można również unikać switch
(choć niekoniecznie zalecane) za pomocą match
myfunction3 <- function(x) {
df <- data.frame(A = 1:3, B = c("one", "two", "three"), stringsAsFactors = FALSE)
ifelse(x %in% 1:3,
df$B[match(x, df$A)],
"default")}
myfunction3(1)
## [1] "one"
myfunction3(4)
## [1] "default"
Jeśli nie przeszkadza mi powiedzieć jak dodać domyślną tej instrukcji switch? – Venkatesh
Zamiast "function (x)' wykonaj 'function (x = 1)', na przykład (jeśli chcesz, żeby 1 był twoim domyślnym). Możesz również usunąć wszystkie nazwy i po prostu wstaw 'switch (x, {print (" one ")}, {print (" two ")}, {print (" three ")} )' (bez imiona) jako MrFlick wspomniał –
Myślę, że nie było jasne z moim pytaniem. Przepraszam za to. Chcę podać domyślny przypadek dla mojego przełącznika, jak bym to zrobił? – Venkatesh