r - Invalid type (closure) for a variable that is not a function -


loess.smooth <- function(dat) {   dat <- dat[complete.cases(dat),]    ## response   vars <- colnames(dat)   ## covariate   id <- 1:nrow(dat)   ## define loess filter function (fitting loess regression line)   loess.filter <- function (x, span) loess(formula = paste(x, "id", sep = "~"),                                            data = dat,                                            degree = 1,                                            span = span)$fitted    ## apply filter column-by-column   new.dat <- as.data.frame(lapply(vars, loess.filter, span = 0.75),                            col.names = colnames(dat)) } 

when try apply loess.smooth dataframe, error:

 error in model.frame.default(formula = paste(x, "id", sep = "~"), data = dat) :    invalid type (closure) variable 'id'  

i don't understand why problem since id not function, implied error. when run through these lines of code outside of function, works fine , want do.

it scoping issue involving passing vector of strings loess function instead of passing vector of formulas. problem environment returns null former, loess doesn't know find it. if wrap formula in as.formula works. variable assigned local environment inside function call default.

as cryptic error, happens when name variable same name of given function package loaded, since if function doesn't find variable in local environment, scope in loaded packages function. in case, id function loaded dplyr library.


Comments

Popular posts from this blog

php - Vagrant up error - Uncaught Reflection Exception: Class DOMDocument does not exist -

vue.js - Create hooks for automated testing -

Add new key value to json node in java -