功能,如果和三个条件。并且我的数据集中有一些NA

时间:2017-08-19 13:32:35

标签: r function loops

大家好! 这是我的代码:

f1 <- function(x){
    if(x > 10){
      z = 1
    } else if (x < 10 && x >0) {
      z=2
    } else {
      z=3} 
      return(z)
    } 

    r <- c(NA,NA,NA,NA,1:96)
    s <- numeric(100)
    for(i in 1:length(s)){
      s[i] <- f1(r)
    }

错误:

  

if(x&gt; 10){:缺少值需要TRUE / FALSE时出错   另外:警告信息:   在if(x> 10){:     条件的长度> 1,只使用第一个元素

我需要什么: 我有一个数据集'r'。我需要创建一个函数或循环来判断我的数据集。然后将结果放在's'。

's'是这样的事情:

3 3 3 3 2 2 2 2 2 2 2 2 2 3 1 1 1 1 1 1....

1 个答案:

答案 0 :(得分:0)

您可以事先替换NA,即

r[is.na(r)] <- -1
ifelse(r > 10, 1, ifelse(r <10 & r > 0, 2, 3))
#[1] 3 3 3 3 2 2 2 2 2 2 2 2 2 3 1 1 1 1 1 1 1 1 1 1...

#or include !is.na(r) in every condition, i.e.

ifelse(r > 10 & !is.na(r), 1, ifelse(r <10 & r > 0 & !is.na(r), 2, 3))
#[1] 3 3 3 3 2 2 2 2 2 2 2 2 2 3 1 1 1 1 1 1 1 1 1 1...