我对r很陌生,我正试图通过解决其中一本关于r的书中的问题来更好地掌握这门语言(我不确定我是否可以把标题放在这里不做广告)。其中一个问题是要求根据一定的标准向变量分配条件值。更准确地说,我随机选择了一个介于2到12之间的数字(掷出2个骰子),并根据得到的值,将值赋给变量status和points,如下所示:
status <- FALSE和points <- NAstatus <- TRUE和points <- NAstatus <- 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函数来完成吗?我试图找出解决这个简单问题的方法是否不止一种,这样我就知道如何处理更复杂的问题。
谢谢!
发布于 2015-03-31 20:18:55
这可能不是最优雅的回答,但您可以这样做,这演示了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 ),最后一个参数替换值(如果为false )。
https://stackoverflow.com/questions/29377007
复制相似问题