问题描述
我最近开始学习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"