[R-br] Como ver o que uma função faz

Pedro Emmanuel Alvarenga Americano do Brasil emmanuel.brasil em gmail.com
Sexta Agosto 25 15:49:07 -03 2017


> Hmisc:::Function.cph
Error in get(name, envir = asNamespace(pkg), inherits = FALSE) :
  object 'Function.cph' not found
> Hmisc::Function.cph
Error: 'Function.cph' não é um objeto exportado de 'namespace:Hmisc'
> Hmisc:Function.cph
Error: object 'Hmisc' not found
>
test1 <- list(time=c(4,3,1,1,2,2,3),
+               status=c(1,1,1,0,1,1,0),
+               x=c(0,2,1,1,1,0,0),
+               sex=c(0,0,0,0,1,1,1))
> fit1 <- cph(Surv(time, status) ~ x + sex, test1)
> Function(fit1)
function(x = NA,sex = NA) {-0.95815758+0.78116618*x+0.93375738*sex }
<environment: 0x000000001fc14318>
> lp.fit1 <- Function(fit1)
> lp.fit1(x = 3, sex = 1) # preditor linear de um sujeito de sexo = 1 e
preditor x = 3.
[1] 2.319098
>

Pedro Brasil

Em 25 de agosto de 2017 14:53, Tiago Fragoso <fragoso2718 em gmail.com>
escreveu:

> Olá,
>
> Essa função não aparece nem pra mim nem pro Marcus quando usamos
> methods(), capaz que ela não esteja em versões posteriores do Hmisc.
>
> O asterisco na saida do methods() indica uma função não exportada. Nesse
> caso, Hmisc:::Function.cph deveria achar a função. Note os três ":".
>
> 2017-08-25 14:10 GMT-03:00 Pedro Emmanuel Alvarenga Americano do Brasil
> via R-br <r-br em listas.c3sl.ufpr.br>:
>
>> Ei Marcus,
>>
>> No meu caso, eu gostaria de ver a Function.cph, mas ela aparece com um
>> asterisco que eu não sei o que é. Então...
>>
>> > Function.cph
>> Error: object 'Function.cph' not found
>> > Function.cph*
>> +
>>
>> E a função não aparece.
>>
>> Pedro Brasil
>>
>> Em 25 de agosto de 2017 13:37, Marcus Nunes <marcus.nunes em gmail.com>
>> escreveu:
>>
>>> Use `methods` para encontrar os métodos da função desejada:
>>>
>>> > methods(Function)
>>> [1] Function.areg.boot Function.transcan
>>> see '?methods' for accessing help and source code
>>>
>>> Esta função tem dois métodos associados a ela: Function.areg.boot e
>>> Function.transcan. Agora é só pedir pra ver o código fonte do método que te
>>> interessa:
>>>
>>> > Function.areg.boot
>>> function (object, type = c("list", "individual"), ytype =
>>> c("transformed",
>>>     "inverse"), prefix = ".", suffix = "", pos = -1, ...)
>>> {
>>>     type <- match.arg(type)
>>>     ytype <- match.arg(ytype)
>>>     if (missing(type) && !(missing(prefix) & missing(suffix) &
>>>         missing(pos)))
>>>         type <- "individual"
>>>     fit <- object$fit
>>>     k <- length(fit)
>>>     nam <- names(fit)
>>>     g <- vector("list", k)
>>>     xtype <- object$xtype
>>>     typey <- object$ytype
>>>     catl <- object$cat.levels
>>>     names(g) <- nam
>>>     for (i in 1:k) {
>>>         typ <- if (i == 1)
>>>             typey
>>>         else xtype[i - 1]
>>>         if (typ == "c") {
>>>             if (i == 1 && ytype == "inverse")
>>>                 stop("currently does not handle ytype=\\"inverse\\" when
>>> y is categorical")
>>>             h <- function(x, trantab) {
>>>                 if (is.factor(x))
>>>                   x <- as.character(x)
>>>                 trantab[x]
>>>             }
>>>             w <- fit[[i]]$y
>>>             names(w) <- catl[[nam[i]]]
>>>             formals(h) <- list(x = numeric(0), trantab = w)
>>>         }
>>>         else {
>>>             h <- function(x, trantab) {
>>>                 s <- !is.na(x)
>>>                 res <- rep(NA, length(x))
>>>                 res[s] <- approxExtrap(trantab, xout = x[s])$y
>>>                 res
>>>             }
>>>             fiti <- fit[[i]]
>>>             formals(h) <- list(x = numeric(0), trantab = if (i ==
>>>                 1 && ytype == "transformed") list(x = fiti[[2]],
>>>                 y = fiti[[1]]) else fiti)
>>>         }
>>>         g[[i]] <- h
>>>     }
>>>     if (type == "list")
>>>         return(g)
>>>     fun.name <- paste(prefix, nam, suffix, sep = "")
>>>     for (i in 1:k) assign(fun.name[i], g[[i]], pos = pos)
>>>     invisible(fun.name)
>>> }
>>> <environment: namespace:Hmisc>
>>>
>>>
>>>
>>>
>>>
>>>
>>> --
>>> Marcus Nunes
>>> Professor Adjunto
>>> Universidade Federal do Rio Grande do Norte
>>> Centro de Ciências Exatas e da Terra
>>> Departamento de Estatística
>>> Laboratório de Estatística Aplicada
>>> marcus.nunes em ccet.ufrn.br
>>> http://marcusnunes.me/
>>>
>>>
>>> 2017-08-25 13:21 GMT-03:00 Pedro Emmanuel Alvarenga Americano do Brasil
>>> via R-br <r-br em listas.c3sl.ufpr.br>:
>>>
>>>> Amigos de R,
>>>>
>>>> Gostaria de poder ver a sequencia de operações que uma função faz. Na
>>>> maioria das funções, basta digitar o nome da função no console, por exemplo
>>>>
>>>> > trimws
>>>> function (x, which = c("both", "left", "right"))
>>>> {
>>>>     which <- match.arg(which)
>>>>     mysub <- function(re, x) sub(re, "", x, perl = TRUE)
>>>>     if (which == "left")
>>>>         return(mysub("^[ \t\r\n]+", x))
>>>>     if (which == "right")
>>>>         return(mysub("[ \t\r\n]+$", x))
>>>>     mysub("[ \t\r\n]+$", mysub("^[ \t\r\n]+", x))
>>>> }
>>>> <bytecode: 0x0000000002fdbd78>
>>>> <environment: namespace:base>
>>>>
>>>> No entanto, algumas funções não seguem essa regra e eu não sei como
>>>> fazer. Por exemplo
>>>>
>>>> library(Hmisc)
>>>> > Function
>>>> function (object, ...)
>>>> UseMethod("Function")
>>>> <environment: namespace:Hmisc>
>>>>
>>>> Alguma dica pra conseguir enxergar as operações dessa função?
>>>>
>>>> Abraço forte,
>>>>
>>>> Pedro Brasil
>>>>
>>>> _______________________________________________
>>>> R-br mailing list
>>>> R-br em listas.c3sl.ufpr.br
>>>> https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br
>>>> Leia o guia de postagem (http://www.leg.ufpr.br/r-br-guia) e forneça
>>>> código mínimo reproduzível.
>>>>
>>>
>>>
>>
>> _______________________________________________
>> R-br mailing list
>> R-br em listas.c3sl.ufpr.br
>> https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br
>> Leia o guia de postagem (http://www.leg.ufpr.br/r-br-guia) e forneça
>> código mínimo reproduzível.
>>
>
>
-------------- Próxima Parte ----------
Um anexo em HTML foi limpo...
URL: <http://listas.inf.ufpr.br/pipermail/r-br/attachments/20170825/9aa86b31/attachment-0001.html>


Mais detalhes sobre a lista de discussão R-br