myfunction <- function(x) {
switch(x,
print("one"),
print("two"),
print("three"))}
myfunction(1)
## [1] "one"
编辑: 正如评论所说,这种方法不评估正在输入的值,而不是把它们作为一个指标。因此,它适用于你的情况,但如果语句要重新排序,它将不起作用(请参阅@Joshs回答以获得更好的方法)。
无论哪种方式,我不认为switch
是在这种情况下使用的正确功能,因为它主要是用于在不同的选择之间切换,而在你的情况下,你基本上反复运行相同的功能。因此,为每个备选方案添加额外的陈述看起来太多了(例如,如果您想要显示20个不同的数字,则必须编写20个不同的陈述)。
相反,你可以试试english
包,让您可以显示尽可能多的数字,你将在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"
或者,你也可以尽量避免使用switch
(尽管不一定推荐)通过使用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 2014-12-03 19:14:15
例如(如果您希望1是您的默认值),请不要使用'function(x)'执行'函数(x = 1)'。您也可以删除所有的名称,只需将'switch(x, {print(“one”)}, {print(“two”)}, {print(“three”)} )'(wihtout the名字),如MrFlick所述 – 2014-12-03 19:16:17
我想我对我的问题并不清楚。对不起。我想给我的开关箱默认情况下,我会怎么做? – Venkatesh 2014-12-03 19:20:09