Say I have a pair of vectors, one consisting of variable names and the other containing Booleans that determine whether the variables in the first vector should be treated as factors or not:
a <- c("var1", "var2", "var3")
b <- c(TRUE, FALSE, FALSE)
Is there a way of automatically converting these two vectors into a formula of the form:
var0 ~ factor(var1) + var2 + var3
? If you have a technique of doing this that doesn’t work with a second vector of Booleans, but requires some other way of specifying which variables are to be treated as factors, I’m still happy to hear your technique.
>Solution :
You could use ifelse
and reformulate
reformulate(ifelse(b, sprintf("factor(%s)",a), a), 'var0')
var0 ~ factor(var1) + var2 + var3