myfunction <- function(x) {
switch(x,
print("one"),
print("two"),
print("three"))}
myfunction(1)
## [1] "one"
편집 : 코멘트에 언급 된 바와 같이,이 방법은 입력되는 값을 평가 되지 않고 인덱스로 사용. 따라서 귀하의 경우에는 작동하지만 진술이 재정렬 될 경우 작동하지 않습니다 (더 나은 접근을 위해 @Joshs 대답 참조).
어느 경우에도 switch
은이 경우에 사용할 올바른 함수라고 생각하지 않습니다. 이는 대체로 서로 다른 옵션간에 전환하기위한 것이기 때문에 당신이 기본적으로 동일한 기능을 반복적으로 실행하고 있기 때문입니다. 따라서 각 대안에 대한 추가 문장을 추가하는 것은 너무 많은 작업처럼 보입니다 (예를 들어, 20 개의 다른 숫자를 표시하려면 20 개의 다른 문장을 써야합니다).
대신
, 당신은 또한 switch
를 사용하여 피할 수, 당신은
library(english)
myfunction2 <- function(x) {
ifelse(x %in% 1:3,
as.character(as.english(x)),
"default")}
myfunction2(1)
## [1] "one"
myfunction2(4)
## [1] "default"
대안 ifelse
문에 정의 할 수만큼 숫자를 표시 할 수 있도록 할 english
패키지를 시도해 볼 수도 있습니다 (반드시 권장 아니지만) 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"
어떻게이 switch 문에 대한 기본을 추가하는 말해 괜찮다면? – Venkatesh
대신에'function (x)'대신'function (x = 1)'을 실행하십시오. 모든 이름을 지우고'switch (x, {print ("one")}, {print ("two")}, {print ("three")} )'(wihtout 이름) MrFlick 언급대로 –
나는 내 질문에 분명하지 않았다고 생각해. 그 죄송합니다. 스위치 케이스에 대한 기본 사례를 제공하고 싶습니다. 어떻게해야합니까? – Venkatesh