R switch()如何将案例与向量进行比较?

标签 r switch-statement

我在 R 中的 switch 语句有一点问题。 下面的代码就OK了……:

    value = "B"
  switch(value, 
         "A"={
           print("value = A")
         },
         "B"={
           print("value = B")
         },
         "C"={
           print("value = C")
         },
         {
           print("Other !!!")
        }
        )

它返回:

[1] "value = B"

...但我想将值与向量的值进行比较,如下所示:

mychr = c("A","B", "C")
  value = "B"
  switch(value, 
         mychr[1]={
           print(mychr[1])
         },
         mychr[2]={
           print(mychr[2])
         },
         mychr[3]={
           print(mychr[3])
         },
         {
           print("Other !!!")
         }
         )

这行不通。

我可以用“if else”或第一个代码来做到这一点,但我想理解错误。

最佳答案

我确定有更简单的方法,但您可以使用 alistdo.call

xlist = c("A","B", "C")
value = "B"
myList <- alist(print(xlist[1]), print(xlist[2]), print(xlist[3]), print("Other !!!"))
myList <- setNames(myList, c(xlist, ''))
do.call(switch, c(EXPR = value, myList))

例子:

> value = "D"
> do.call(switch, c(EXPR = value, myList))
[1] "Other !!!"
> value = "A"
> do.call(switch, c(EXPR = value, myList))
[1] "A"
> value = "C"
> do.call(switch, c(EXPR = value, myList))
[1] "C"
> value = "B"
> do.call(switch, c(EXPR = value, myList))
[1] "B"

关于R switch()如何将案例与向量进行比较?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24675022/

相关文章:

c++ - 结构成员的模板函数

c - 输入末尾的预期声明或语句。我数出了正确的括号数量

r - 一根图例行中有多个希腊字母

r - 获得闪避条形图?

r - 列表中按名称排列的数据帧值的平均值

r - 在 dplyr 的 mutate 中使用 switch 语句

Swift 开关默认 + fallthrough : missing return in a function expected to return 'String'

c++ - 开关盒避免循环

r - 计算 R 中唯一的分类变量对

r - 如何计算 R quosure 中变量的数量?