Ifelse not working

I am using ifelse to filter from a vector of characters.

file_list=c("a.csv","b.csv","c.csv","d.csv","e.csv","f.csv")

rmd_list=c("c.csv","d.csv","e.csv","f.csv")


input=as.list(c("Tom","Brad"))
RCM=input[[1]]


ifelse(RCM %in% "Tom",file_list[!file_list%in%rmd_list],0)

The output suppose to show "a.csv" and "b.csv"

The ifelse() function returns a vector the same length as the test expression, which in this case is 1.

length(RCM %in% "Tom")
#> [1] 1 

Instead, you can use if...else.

if(RCM %in% "Tom") {file_list[!file_list %in% rmd_list]} else {0}
#> [1] "a.csv" "b.csv"

Created on 2023-02-03 with reprex v2.0.2.9000

ifelse steps along the vectors in its arguments. Since RCM is of length 1, it only returns one value. This illustration might help you see what ifelse does.

ifelse(c("Tom","Brad","Alice","Tom") %in% "Tom", c(1,2,3,4),c(11,22,33,44))
[1]  1 22 33  4

Compare with

 "Tom" %in% RCM