R:如何编写自己的流量控件

时间:2014-08-11 13:54:48

标签: r flow

是否可以在R中编写自己的流量控制功能?例如,假设我们想编写一个案例类型语句。设置值然后检查内容是否符合案例值:

expo <- function (x,a) {
 case(a)
 C(1) return(x)
 C(2) return(x^2)
 C(3) return(x^3)
 C(%in% c(4,5) return(x^5)
}

expo(2,1)
[2]
expo(2,2)
[4]
expo(2,3)
[8]
expo(2,4)
[32]

2 个答案:

答案 0 :(得分:1)

以下是控制工作流程的两种方法。

expo <- function(x, a) {
  switch(a,
         "1" = x,
         "2" = x^2,
         "3" = x^3,
         "4" = x^5,
         "5" = x^5)
}
expo(2, 4)


expo2 <- function(x, a) {
  if (a == 1) return(x)
  if (a == 2) return(x^2)
  if (a == 3) return(x^3)
  if (any(a %in% c(4, 5))) return(x^5)
}
expo2(2,4)

答案 1 :(得分:0)

除了Roman的2,还有第三个:

expo3 <- function (x,a) {
  switch(a,
  x,x^2,x^3,x^5,x^5)
}

这里&#39; a&#39;是一个整数,它将评估相应的元素它可能返回的列表。也就是说,如果a = 2,那么它将返回&#39; x ^ 2&#39;,如果a是4或5,它将返回&#39; x ^ 5&#39;。请注意,您输入的内容如expo(2,7),它将返回NULL。