首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在r中的ifelse函数中赋值变量

在r中的ifelse函数中赋值变量
EN

Stack Overflow用户
提问于 2015-03-31 19:33:58
回答 1查看 1.9K关注 0票数 0

我对r很陌生,我正试图通过解决其中一本关于r的书中的问题来更好地掌握这门语言(我不确定我是否可以把标题放在这里不做广告)。其中一个问题是要求根据一定的标准向变量分配条件值。更准确地说,我随机选择了一个介于2到12之间的数字(掷出2个骰子),并根据得到的值,将值赋给变量statuspoints,如下所示:

  1. 如果分数为2,3,或12分,则status <- FALSEpoints <- NA
  2. 如果分数是7分或11分,那么status <- TRUEpoints <- NA
  3. 如果分数是4-6,8-10,那么status <- NApoints <- score

这是一个非常简单的问题,我知道以下代码可以工作:

代码语言:javascript
复制
score <- sample(2:12,1)
    if(score %in% c(2,3,12)){
        status <- FALSE
        points <- NA
    } else if(score %in% c(7,11)){
        status <- TRUE
        points <- NA
    } else {
        status <- NA
        points <- score
    }

我还试图使用ifelse函数来解决这个问题,但是当我试图赋值变量时会出现一个错误。这是我所做的(我知道我现在得到的是一个字符向量,但这是我唯一能让它工作的方法)。

代码语言:javascript
复制
ifelse(any(score == c(2,3,12)), "game_status = FALSE, point = NA", 
       ifelse(any(score == c(7,11)), "game_status = TRUE, point = NA", 
       paste("game_status = NA, point = ", score)))

有没有一种在ifelse函数中赋值的方法?同样,它能用switch函数来完成吗?我试图找出解决这个简单问题的方法是否不止一种,这样我就知道如何处理更复杂的问题。

谢谢!

EN

回答 1

Stack Overflow用户

发布于 2015-03-31 20:18:55

这可能不是最优雅的回答,但您可以这样做,这演示了ifelse和条件语句的使用:

代码语言:javascript
复制
status=NULL
status[score %in% c(2,3,12)]<-FALSE
status[score %in% c(7,11)]<-TRUE
status[score %in% c(4:6,8:10)]<-NA

points=ifelse(score %in% c(4:6,8:10),score,NA)

正如您所看到的,我使用ifelsepoints创建了一个逻辑语句--第一个参数是逻辑测试,第二个参数替换得分的值(如果为true ),最后一个参数替换值(如果为false )。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29377007

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档