[R] passing field name parameter to function

David Winsemius dwinsemius at comcast.net
Sun Oct 11 04:47:32 CEST 2009


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




More information about the R-help mailing list