r - 如何以简单的方式处理多个 if 条件?

标签 r if-statement

假设我有多个 if 条件,在这些条件下,不同的值被分配给一个变量。例如:

x <- rep(c(1, 2, 3, 4, 5, 6, 7, 8), 4)
for(i in length(x)) {
    if(x[i] == 2) {
      x[i] <- 10
    }
    if(x[i] == 4) {
      x[i] <- 12
    }
    ## and there are more similar if conditions 
    ## ......
}

一般来说,我会根据具体情况,将这个vector中的数字替换成其他数字。有没有更简单的方法来做到这一点而无需编写这么长的循环?

最佳答案

如果您的 x 是小的非零整数,请将查找表制作成一个简单的向量:

lut=c(10,12,13,55,99,12,12,12,99,1010)
lut[x]
 [1] 10 12 13 55 99 12 12 12 10 12 13 55 99 12 12 12 10 12 13 55 99 12 12 12 10
 [26] 12 13 55 99 12 12 12

对于其他键,使用列表并表征所有事物:

> lut = list("999"=1, "8"=2, "foo"=223)
> unlist(lut[c("999","999","8","8","8","foo")])
 999 999   8   8   8 foo 
   1   1   2   2   2 223 

关于r - 如何以简单的方式处理多个 if 条件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23785338/

相关文章:

重复测量 bootstrap 统计数据,按多个因素分组

java - 我该如何做出这个 if 语句?

php 如果 foreach 语句有效,但不显示消息

java - If语句与 boolean android

batch-file - 在CMD中使用if条件

r - 使用千位分隔符格式化 tibble 中的数值会出现错误

r - 如何使用 dplyr 在具有过滤功能的函数内应用 for 循环?

r - R中使用数据表的连续行组之间的区别

r - 如何使用 RMySQL 包更新 MySQL 表

C 程序的函数似乎总是返回 true,但我不明白为什么