功能中的条件未产生预期的输出

问题描述

这是我成为被动用户一段时间后的第一篇文章

我最近开始学习R中的函数,并且有一个函数使用两种方法解决它。 这是一个可行的方法

    find_longer_vector <- function(a,b) {
    vlength <- case_when(
    length(a) > length(b) ~ "First",!(length(a) > length(b)) ~ "Second",(length(a) == length(b)) ~ "Equal length"
  )
  return(vlength)
}

前两个条件运行,但第三个条件不起作用,请帮忙。

我尝试的第二种方法应该可以工作,但是根本不返回输出

find_longer_vector <- function(a,b){
if (length(a) > length(b)) {
  vlength <- "First"
} else if(!(length(a) > length(b))){vlength <- 'Second'
} else if(length(a) == length(b)){
  vlength <- 'Equal'
  
  return(vlength)
}}

在这方面获得帮助真是棒极了。

解决方法

case_when以顺序方式执行命令,这意味着它将首先检查条件1是否为TRUE,它将返回相应的输出,而不检查其他条件。如果为FALSE,它将进入条件2。

第三个条件无效,因为在达到第三个条件之前,第二个条件(!(length(a) > length(b)))变为TRUE,因此它返回该值。首先将条件相等。

find_longer_vector <- function(a,b) {
  vlength <- dplyr::case_when(
    length(a) == length(b) ~ "Equal length",length(a) > length(b) ~ "First",TRUE ~ "Second",)
  return(vlength)
}

find_longer_vector(1:10,1:10)
#[1] "Equal length"
find_longer_vector(1:10,1:15)
#[1] "Second"
find_longer_vector(1:10,1:5)
#[1] "First"