【问题标题】:R: How to code your own flow controlsR:如何编写自己的流程控制
【发布时间】:2014-08-11 13:54:47
【问题描述】:

是否可以在 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]

【问题讨论】:

  • 您不能编写自己的流控制,只能编写函数。对于类似的东西,请参阅swtich() 函数。
  • @MrFlick 表示switch()
  • 确实如此。谢谢@RomanLuštrik。我现在编辑我的原始评论为时已晚。

标签: r flow


【解决方案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)

【讨论】:

    【解决方案2】:

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

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

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

    【讨论】:

      猜你喜欢
      • 2021-08-29
      • 2012-07-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-06-12
      • 1970-01-01
      • 1970-01-01
      • 2017-06-14
      相关资源
      最近更新 更多