Вы можете использовать любое из следующего:
Использование substitute
:
to_analyze <- function(dep, indep, data){
glm(substitute(dep ~ factor(indep)), data=data)
}
to_analyze(dep=age, indep=sex, data=dsn)
Преимущество: Можно написать независимое в виде формулы.
например,
to_analyze(Petal.Width, Sepal.Length + Sepal.Width, data = iris)
Использование переформулировки, как указано @ NelsonGon
to_analyze <- function(dep, indep, data){
glm(reformulate(sprintf("factor(%s)",indep), dep), data = data)
}
Обратите внимание, что для вызова этой функции переменные должен иметь тип символа
to_analyze(dep= "age", indep="sex", data=dsn)
Recall glm
также может принимать строку, которая может быть проанализирована по формуле:
to_analyze <- function(dep, indep, data){
glm(sprintf("%s~factor(%s)", dep, indep), data = data)
}
to_analyze("age", "sex", data=dsn)
или даже:
to_analyze <- function(dep, indep, data){
glm(paste(dep,"~ factor(",indep,")"), data = data)
}
to_analyze("age", "sex", data=dsn)
LASTLY: для объединения и замены, и вставки:
to_analyze <- function(dep, indep, data){
glm(paste(substitute(dep),"~ factor(",substitute(indep),")"), data = data)
}
будет работать как для символов, так и для символов. например:
to_analyze(age, sex, data=dsn)
to_analyze("age", "sex", data=dsn)