在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
不涉及,因此我希望函数不包含它。下面继续…我必须道歉,你的回答首先是正确的。我漏掉了“漏掉”这个词,当然它不允许我得到正确的结果。谢谢你的帮助!