Tôi hy vọng ví dụ này sẽ giúp. Bạn có thể sử dụng dấu ngoặc nhọn để đảm bảo rằng bạn đã có mọi thứ được bao bọc trong trình thay đổi trình chuyển đổi (xin lỗi không biết thuật ngữ kỹ thuật nhưng thuật ngữ đứng trước dấu = thay đổi điều gì xảy ra). Tôi nghĩ về switch như một loạt các if () {} else {}
câu lệnh được kiểm soát nhiều hơn .
Mỗi lần chức năng chuyển đổi đều giống nhau nhưng lệnh chúng tôi cung cấp thay đổi.
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!")
)
Đây là bên trong một hàm:
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")