On Oct 10, 2009, at 9:27 PM, tdm wrote:
Hi,
I am passing a data frame and field name to a function. I've figured
out how
I can create the formula based on the passed in field name, but I'm
struggling to create a vector based in that field.
for example if I hard code with the actual field name
Y = df$Target, everything works fine.
but if I use the passed in parameter name, it doesn't give me what I
want,
Y = df$mytarget
Here is the function,
# trying to pass field name to a function
logistictest <- function(df,mytarget)
{
#library for AUC calculation
library(caTools)
#build logistic model
mytarget <- deparse(substitute(mytarget))
myformula <- paste(mytarget," ~ .")
myformula <- deparse(substitute(myformula))
logistic_reg <- glm(myformula , data=df,
family=binomial(link="logit"))
print("model build OK")
#score up
scores <- predict(logistic_reg, type="response", df)
print("model scored OK")
#calc AUC
Y = df$mytarget
auc <- colAUC(scores,Y)
print("auc calculated OK")
}
logistictest(df=trainset,mytarget=Target)
A further comment. There is no object "Target" (or if there is, it is
created by code that you have not included). There is only a name
"Target" for a list element in the object "df". The formalism df
$Target is really syntactic window dressing for df$"Target" and it
only works because $ is designed to extract named elements from within
an object that is visible to to the interpreter at this level. (Sorry
for imprecise language, but that what noobs like me end up resorting
to.)
[1] "model build OK"
Actually that is not tested. I suspect that if you wrote:
print(logistic_reg) ... it would be empty.
[1] "model scored OK"
Error in as.vector(x, mode) : invalid 'mode' argument
--
David Winsemius, MD
Heritage Laboratories
West Hartford, CT
______________________________________________
R-help@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
and provide commented, minimal, self-contained, reproducible code.