18 agosto, 2021
typeof) "closure", com chamada UseMethodutils::isS3stdGeneric()sloop::ftype()# Funcoes do tipo "closure" que nao pertencem ao sistema S3 utils::isS3stdGeneric(data) ## [1] FALSE sloop::ftype(data) ## [1] "function" # Funcao generica S3 em funcoes do tipo "closure" utils::isS3stdGeneric(mean) ## mean ## TRUE sloop::ftype(mean) ## [1] "S3" "generic"
# funcoes primitivas e internas que nao pertencem ao sistema S3 utils::isS3stdGeneric(inherits) ## [1] FALSE sloop::ftype(inherits) ## [1] "internal" #----- utils::isS3stdGeneric(unclass) ## [1] FALSE sloop::ftype(unclass) ## [1] "primitive" # funcoes genericas do sistema S3 que sao primitivas e internas utils::isS3stdGeneric(length) ## [1] FALSE sloop::ftype(length) ## [1] "primitive" "generic" #-- utils::isS3stdGeneric(unlist) ## [1] FALSE sloop::ftype(unlist) ## [1] "internal" "generic"
mean
## function (x, ...)
## UseMethod("mean")
## <bytecode: 0x0000000008622dd8>
## <environment: namespace:base>
.S3PrimitiveGenerics:.S3PrimitiveGenerics
## [1] "anyNA" "as.character" "as.complex" "as.double"
## [5] "as.environment" "as.integer" "as.logical" "as.call"
## [9] "as.numeric" "as.raw" "c" "dim"
## [13] "dim<-" "dimnames" "dimnames<-" "is.array"
## [17] "is.finite" "is.infinite" "is.matrix" "is.na"
## [21] "is.nan" "is.numeric" "length" "length<-"
## [25] "levels<-" "names" "names<-" "rep"
## [29] "seq.int" "xtfrm"
# Outras funcoes primitivas
(outros_obj_S3_primitivos <- c("[", "[[", "$", "[<-", "[[<-", "$<-"))
## [1] "[" "[[" "$" "[<-" "[[<-" "$<-"
# Outras funcoes internas nao primitivas
(outros_obj_S3_primitivos <- c("unlist", "cbind", "rbind", "as.vector"))
## [1] "unlist" "cbind" "rbind" "as.vector"
Math, Grupo Ops, Grupo Summary e grupo ComplexMath:
abs, sign, sqrt, floor, ceiling, trunc, round, signifexp, log, expm1, log1p, cos, sin, tan, cospi, sinpi, tanpi, acos, asin, atan, cosh, sinh, tanh, acosh, asinh, atanhlgamma, gamma, digamma, trigammacumsum, cumprod, cummax, cumminOps:
"+", "-", "*", "/", "^", "%%", "%/%""&", "|", "!""==", "!=", "<", "<=", ">=", ">"Math, Grupo Ops, Grupo Summary e grupo ComplexSummary:
all, any, sum, prod, min, max, rangeComplex:
Conj, Im, Mod, Re# Todos os objetos do pacote 'base' todosobj <- objects(baseenv(), all.names = TRUE); # Mostre apenas os primeiros (ver todos remova 'head') head(todosobj)
## [1] "-" "-.Date" "-.POSIXt" "!" "!.hexmode" "!.octmode"
# Quantos objetos no pacote 'base'? length(todosobj)
## [1] 1373
# Quais sao funcoes primitivas?
objprimitivos <- todosobj[sapply(todosobj,
function(x) is.primitive(get(x, envir = baseenv())))]
# Mostre os primeiros (ver todos remova 'head')
head(objprimitivos)
## [1] "-" "!" "!=" "$" "$<-" "%%"
# Quantos primitivos ('buitin' ou 'special')?
length(objprimitivos)
## [1] 204
# Quais sao primitivos genéricos (Sistema S3)?
ehPrimitivaGenerica <- function(primitiva) {
fprimitiva <- getFunction(primitiva, mustFind = FALSE, where =asNamespace("base"))
ehgenerica <- sloop::ftype(fprimitiva)
if (any(ehgenerica == "generic")) {
TRUE
} else FALSE
}
# Mostre os primeiros (ver todos remova 'head') head(sapply(objprimitivos, ehPrimitivaGenerica)) ## - ! != $ $<- %% ## TRUE FALSE TRUE TRUE TRUE TRUE # Quantas sao primitivas genericas? sum(sapply(objprimitivos, ehPrimitivaGenerica)) ## [1] 100