Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/75.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在r中创建一个带有布尔选项的函数:如果调用该函数时未显示布尔选项,如何返回数据帧?_R - Fatal编程技术网

在r中创建一个带有布尔选项的函数:如果调用该函数时未显示布尔选项,如何返回数据帧?

在r中创建一个带有布尔选项的函数:如果调用该函数时未显示布尔选项,如何返回数据帧?,r,R,我得到了函数的以下代码: data_function <- function(df,condtion_a,condition_b, condition_c= TRUE) { df <- df %>% filter(col_a == condtion_a & col_b == condition_b) if(condition_c == TRUE) { df %>% filter(col_c== TRUE) } else i

我得到了函数的以下代码:

data_function <- function(df,condtion_a,condition_b, condition_c= TRUE) {
  df <- df %>%
    filter(col_a == condtion_a & col_b == condition_b) 
    if(condition_c == TRUE) {
      df %>% filter(col_c== TRUE)
    } else if(condition_c== FALSE) { 
      df %>% filter(col_c == FALSE)
    }
    else {
  return(df)
    }
}
数据函数%filter(列c==TRUE)
}如果(条件_c==FALSE){
df%>%过滤器(列c==FALSE)
}
否则{
返回(df)
}
}
当我将
TRUE
FALSE
赋给条件时,该代码起作用。但是,我想要一个选项,当两个条件c都不是
TRUE
FALSE
时,只返回
df%过滤器(col\u a==条件a&col\u b==条件b)
部分代码。例如,我想使用此函数以三种方式工作:

data\u函数(df,条件a,条件b,条件c=TRUE)

data\u函数(df,条件a,条件b,条件c=FALSE)

数据功能(测向、条件a、条件b)


当调用函数时,
condition\u c
不存在时,后者仅返回
df%过滤器(col\u a==condition\u a&col\u b==condition\u b)
部分。我觉得这是一件非常简单的事情,但我想不出如何解决这个问题。谢谢

基于函数,
返回(df)
在应用
if/else
条件之前返回数据集,因为该条件的输出未更新为“df”

data_function <- function(df,condtion_a,condition_b, condition_c) {
 # subset the rows of the dataset and update it to same object
  df <- df %>%
         filter(col_a == condtion_a & col_b == condition_b) 
 df1 <- if(missing(condition_c)) {
        df
    } else {
 # apply the `if/else if/else` and assign it to a new object or same object
      if(condition_c) {
         df %>%
             filter(col_c)
       } else if(!condition_c) { 
          df %>% 
             filter(!col_c)
     }else {
            df
           }
      }
   
    return(df1)
  }
data\u函数%
过滤器(!col_c)
}否则{
df
}
}
返回(df1)
}

不幸的是,这并没有达到我想要的结果。当
condition\u c=TRUE
condition\u c=FALSE
时,它可以正常工作,但当我省略
condition\u c
时,例如
data\u函数(df,condition\u a,condition\u b)
时,它返回的是错误的。它应该返回带有过滤条件的df(col_a==条件a&col_b==条件b)。谢谢你的帮助@BoniPhila请更新一个小的可重复的例子,预计output@BoniPhila如果没有可复制的示例,则很难进行测试。我更新了,但实际上我有一个包含数千行的主数据框。此数据帧将通过该函数。为了使功能成功,需要过滤掉
列a
列b
。因此,最终我希望保留这些结果(我希望我最初的回报能做到这一点)。这将给我一个成功的结果(这是一个过滤掉的数据帧)。在这个df中,
condition_c
不涉及,因此我希望函数不包含它。下面继续…我必须道歉,你的回答首先是正确的。我漏掉了“漏掉”这个词,当然它不允许我得到正确的结果。谢谢你的帮助!