Kai, Apologies for the double message, it didn't go to the list last time.
On Thu, Oct 22, 2015 at 9:59 AM, Kai Nitschke < kai.nitsc...@uniklinik-freiburg.de> wrote: > > “.Call” calls the C/C++ function “C_LogLin”. But when I am running it line > by line I get > the following error on line 23/24: > Error: object 'C_LogLin' not found > > Hence, my questions: > 1. Where does the original “loglin” function get the “C_LogLin” function > from (some libraries? where are they stored)? > The libraries are in the stats package, built from the c code found in the /src directory of the package's source code. > 2. Why does it not work in the normal R command (line by) line but in the > implemented “loglin” function? > Notice that C_LogLin is not in quotes. That is actually an R object, not a string, and it is one that is not exported by the stats package. stats:::C_LogLin would probably work. > 3. Is it possible to isolate the “C_LogLin” function so I can use it in > other scripts or programming languages e.g. Matlab? > A function called by the .Call interface is going to operate on R's internal representation of R objects, called SEXPs, It won't work in other languages without major reworking (I can't say how major without looking for at the code to see if, e.g., it's just a wrapper that calls another c function that might be amenable to that). Even then, you'd have to look at if/how it deals with NAs, etc. ~G On Thu, Oct 22, 2015 at 9:59 AM, Kai Nitschke < kai.nitsc...@uniklinik-freiburg.de> wrote: > Hi everyone, > > I have a question regarding a C function of the "stats" package in R. > > I tried to understand the “loglin” basic function of the “stats” package > implemented in > R. The implemented function itself runs without any problem (perhaps see > sample). When I > ran it line by line it stopped at the lines 23-24 of the loglin-function; > (the following line): > z <- .Call(C_LogLin, dtab, conf, table, start, nmar, eps, iter) > > “.Call” calls the C/C++ function “C_LogLin”. But when I am running it line > by line I get > the following error on line 23/24: > Error: object 'C_LogLin' not found > > Hence, my questions: > 1. Where does the original “loglin” function get the “C_LogLin” function > from (some libraries? where are they stored)? > 2. Why does it not work in the normal R command (line by) line but in the > implemented “loglin” function? > 3. Is it possible to isolate the “C_LogLin” function so I can use it in > other scripts or programming languages e.g. Matlab? > > Thank you in advance for your help, > Kai > > -------------------------------------------- > #Sample > > # Example data > mytable = array(0,dim=c(3,4,5)) > mytable[1,,1] = c(35,26,36,29); mytable[2,,1] = c(21,12,26,27); > mytable[3,,1] = c(9,26,23,38); > mytable[1,,2] = c(43,26,89,26); mytable[2,,2] = c(78,42,32,9); > mytable[3,,2] = c(34,39,42,51); > mytable[1,,3] = c(51,72,62,21); mytable[2,,3] = c(6,52,71,32); > mytable[3,,3] = c(35,36,48,21); > mytable[1,,4] = c(12,26,53,42); mytable[2,,4] = c(96,75,81,56); > mytable[3,,4] = c(32,65,75,63); > mytable[1,,5] = c(21,18,24,33); mytable[2,,5] = c(22,56,36,91); > mytable[3,,5] = c(32,65,63,14); > > # Call of the original function works fine > loglin(mytable,list(c(1,2),c(1,3))) > > # line by line does not work > table = mytable; margin = list(c(1,2),c(1,3)); start = rep(1, > length(table)); fit = FALSE; eps = 0.1; > iter = 20L; param = FALSE; print = TRUE; > rfit <- fit > dtab <- dim(table) > nvar <- length(dtab) > ncon <- length(margin) > conf <- matrix(0L, nrow = nvar, ncol = ncon) > nmar <- 0 > varnames <- names(dimnames(table)) > for (k in seq_along(margin)) { > tmp <- margin[[k]] > if (is.character(tmp)) { > ## Rewrite margin names to numbers > tmp <- match(tmp, varnames) > margin[[k]] <- tmp > } > conf[seq_along(tmp), k] <- tmp > nmar <- nmar + prod(dtab[tmp]) > } > ntab <- length(table) > if (length(start) != ntab ) stop("'start' and 'table' must be same length") > z <- .Call(C_LogLin, dtab, conf, table, start, nmar, eps, iter) > ... > > > -- > Kai Nitschke, Dipl.-Psych. > > Division of Functional Brain Imaging (FBI) > Dept. of Neurology, University of Freiburg > > Breisacher Str. 64, 79095 Freiburg, Germany > Phone: +49 (0) 761 270 - 50410 > Email: kai.nitsc...@uniklinik-freiburg.de > URL: http://www.uniklinik-freiburg.de/fbi/people/kai-nitschke.html > > ______________________________________________ > R-devel@r-project.org mailing list > https://stat.ethz.ch/mailman/listinfo/r-devel > -- Gabriel Becker, PhD Associate Scientist (Bioinformatics) Genentech Research [[alternative HTML version deleted]] ______________________________________________ R-devel@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-devel