Mam nadzieję, że ten przykład pomoże. Możesz użyć nawiasów klamrowych, aby upewnić się, że masz wszystko zawarte w kolesiu zmieniacza przełączników (przepraszam, nie znam terminu technicznego, ale termin poprzedzający znak =, który zmienia to, co się dzieje). Myślę o przełączniku jako o bardziej kontrolowanej grupie if () {} else {}
instrukcji.
Za każdym razem funkcja przełącznika jest taka sama, ale polecenie, które dostarczamy, zmienia się.
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!")
)
Tutaj znajduje się wewnątrz funkcji:
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")