我是r新手,我正试图通过解决其中一本关于r的书中的问题来更好地掌握这种语言(我不确定我是否可以将标题放在这里不做广告)。其中一个问题是要求根据某些标准对变量进行条件赋值。更确切地说,我随机选择一个2到12之间的数字(投掷2个骰子)并且依赖于我得到的值,我必须为变量status
和points
分配值,如下所示: / p>
status <- FALSE
和points <- NA
status <- TRUE
和points <- NA
status <- NA
和points <- score
这是一个非常简单的问题,我知道以下代码有效:
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
函数解决这个问题,但是当我尝试分配变量时出现错误。这就是我所做的(我知道我现在得到的是一个字符向量,但这是我能使它工作的唯一方法。)
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
功能完成?我试图弄清楚是否有一种方法可以解决这个简单的问题,以便我知道如何处理更复杂的问题。
谢谢!
答案 0 :(得分:0)
这可能不是最优雅的答案,但您可以这样做,演示使用ifelse
以及条件语句:
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)
如您所见,我使用ifelse
为points
创建逻辑语句,第一个参数是逻辑测试,第二个参数替换得分的值,如果为true,则最后一个替换值如果不对。