# [R] Fwd: Error message: object of type 'closure' is not subsettable

Simrit Rattan @|mr|t@r@tt@n @end|ng |rom gm@||@com
Mon Apr 1 12:37:17 CEST 2019

```hey everyone :),
Subject: Re: Error message: object of type 'closure' is not subsettable
I am writing a package which should calculate the binary logistic
regression.
The function itself work perfectly, but if I want to load the function from
my package it gives me the above mentioned error. I have tried a lot of
things, googled and so on, but I can not figure out what to change so it
works. I also found out the mistake lies in the first function
(logisticRegression)

logisticRegression <- function(x,y, threshold = 1e-10, maxIter = 100)
{
calcPi <- function(x,betaCoef)
{
betaCoef <- as.matrix(betaCoef)
return(exp(x%*%betaCoef)/(1 + exp(x%*%betaCoef)))
}
betaCoef <- rep(0, ncol(x))

#some initial value which is bigger than the threshold for the loop
initialValue <- 10000

#count of iteration to make sure its not an infinite loop
iterCount <- 0

#iteration process (loop)
while(initialValue > threshold) #convergence test
{
#calculates probabilities using the current estimate of beta
p <- as.vector(calcPi(x, betaCoef))

#calculates W which is needed for the Hessian
W <- diag(p*(1-p))

#calculates the hessian
hessian <- -(t(x)%*%W)%*%x

#calculates beta
betaCoef <- betaCoef - solve(hessian) %*% gradient

#how much did we change beta?

#to see if we reached the max # of iteration
iterCount <- iterCount + 1
if(iterCount > maxIter) {
stop("This is not converging")

}
}
#df
Totaldf <- length(y) - 1
Residualdf <- length(y) - length(betaCoef)
degreesOfFreedom <- cbind(Totaldf, Residualdf)
#fisher information, variance, standard error
fisherInformation <- -hessian
vCov <- solve(fisherInformation)
stdError <- sqrt(diag(vCov))

#wald test statistic
waldTestStatistic <- betaCoef/stdError
pValue <- 2 * pnorm(-abs(waldTestStatistic), mean = 0, sd = 1)

#loglikelihood and deviance
logLikelihoodFunction <-  y%*%x%*%betaCoef - sum(log(1+exp(x%*%betaCoef)))
residualDeviance <- -2*logLikelihoodFunction

#AIC
akaikeIC <- residualDeviance + 2*ncol(betaCoef)
#for R2
cV <- 2/nrow(x) #for C&S R2

#deviance residual
sign1 <- replace(y, y == 0, -1)
devianceResiduals <- sign1*sqrt(-2*(y*log(p) + (1-y)*log(1-p)))
residualQuantiles <- summary(devianceResiduals)

#fitted values
fittedValues <- log(p/(1-p))
#what to return
coefficients <- betaCoef
output <- list()
output\$degreesF <- Residualdf
output\$nulldf <- Totaldf
output\$fittedValues <- fittedValues
output\$devianceResiduals <- devianceResiduals
output\$residualQuantiles <- residualQuantiles
output\$coefficients <- coefficients
output\$vCov <- vCov
output\$coefMat <- cbind(coefficients,
stdError,
waldTestStatistic,
pValue)
colnames(output\$coefMat) <- c("Estimate",
"Std.Err",
"z value",
"Pr(>|z|)")
output\$logLikelihoodFunction <- logLikelihoodFunction
output\$residualDeviance <- residualDeviance
output\$akaikeIC <- akaikeIC
output\$iterCount <- iterCount -1
output\$p <- p
output\$cV <- cV
output

}

logReg <- function(formula, data) {
x <- model.matrix(formula, data)
regressant <- model.frame(formula, data)
y <- regressant[,1]
constant <- matrix(rep(1, length(y)))
nulllog <- logisticRegression(constant,y)
nullDeviance <- nulllog\$residualDeviance
nullLogLikelihood <- nulllog\$logLikelihoodFunction

output <- list()
output <- logisticRegression(x,y)
output\$formula <- formula
output\$nullDeviance <- nullDeviance
output\$nullLogLikelihood <- nullLogLikelihood
output\$call <- match.call()

#define the S3 class

class(output) <- "logReg"
print(output)

}

logReg.default <- function(x, ...) UseMethod("logReg")

print.logReg <- function(x, ...) {
cat("\nCall:\n")
print(x\$call)
cat("\nCoefficients:\n")
colnames(x\$coefficients) <- ""
print(t(x\$coefficients), digits = 5)
cat("\nDegrees of Freedom:",
paste(x\$nulldf, "Total (i.e. Null);", x\$degreesF, "Residual"))
cat("\nNull Deviance:", paste(round(x\$nullDeviance, digits = 2)))
cat("\nResidual Deviance:", paste(round(x\$residualDeviance, digits = 2)))
invisible(x)
}