11 agosto, 2021
S, C, FORTRAN) R;R;R (Melhor escolha!);Assim, esse ambiente inclui:
Rexpression(), eval(), quote(), substitute(), bquote(), desparse());vetor <- TRUE; typeof(vetor) ## [1] "logical" vetor[2] <- 1; typeof(vetor) ## [1] "double" vetor[3] <- "1"; typeof(vetor); vetor ## [1] "character" ## [1] "1" "1" "1"
O R não é uma linguagem estritamente funcional, pois dentre outras situações, se entende que o estilo estritamente funcional apresenta:
x <- 1:10 media <- function(x) mean(x) media(x) ## [1] 5.5
fpura <- function(x) {
if (!is.numeric(x)) stop("x deve ser numérico")
x + 1
}
fpura(x = 2)
## [1] 3
rnorm(n = 3) ## [1] -0.42782752 -0.38515145 0.05923715 rnorm(n = 3) ## [1] -0.2435890 -0.2996528 0.1943401
O R pode apresentar condições mutáveis:
# Criamos um vetor e associamos ao nome 'x' x <- c(1, 2, 3) # Vejamos o identificador de memória lobstr::obj_addr(x) # > "0xcf09be4708" # Modificando no local x[2] <- 4; x # [1] 1 4 3 # Mesmo modificando o objeto, o identificador eh o mesmo lobstr::obj_addr(x) # > "0xcf09be4708"
> # Criando um nome "n" associado a um objeto 10 no escopo da funcao
> n <- 10
>
> # Criando um nome "funcao" associado a um objeto que eh uma funcao
> funcao <- function() {
+ print(n)
+ }
>
> # Imprimindo 'funcao'
> funcao()
## [1] 10
> # Criando n
> n <- 10
> lobstr::obj_addr(n) # Ident do objeto
## [1] "0x723f358"
> #Funcao
> funcao <- function() {
+ print(n) # Imprimindo n
+ n <- 15 # Criando n
+ print(n) # Imprimindo n
+ }
> # Imprimindo 'funcao'
> funcao()
## [1] 10
## [1] 15
> # Imprimindo 'n'
> n; lobstr::obj_addr(n) # Identificador do objeto
## [1] 10
## [1] "0x723f358"
> # Criando n
> n <- 10
> lobstr::obj_addr(n) # Identificador do objeto
## [1] "0x10ba4f88"
> # Criando funcao
> funcao <- function() {
+ # Imprimindo n
+ print(n)
+ # Superatribuicao
+ n <<- 15
+ # Imprimindo n
+ print(n)
+ }
> # Imprimindo 'funcao'
> funcao()
## [1] 10
## [1] 15
> # Imprimindo n
> n; lobstr::obj_addr(n) # Ident do objeto
## [1] 15
## [1] "0x10ba4ea8"
preguicoso <- function(a, b = faux()) a * 100 preguicoso(4)
## [1] 400
> # Funcao anonima > function(x) x + 1 # 1ª forma ## function(x) x + 1 > \(x) x + 1 # 2ª forma (>= R 4.1) ## \(x) x + 1 > # Funcao associado a um nome > fx <- function(x) x + 1 > # Funcao como argumento de outra funcao > x <- cbind(1:10) > apply(x, 1, \(x) x + 1) ## [1] 2 3 4 5 6 7 8 9 10 11 > # Operador binario (Pipe nativo) > 1:10 |> mean() ## [1] 5.5
# Objeto "data.frame" objPOO <- data.frame(a = 1, b = "1", c = TRUE) # Objeto "data.frame" eh um objeto POO? is.object(objPOO)
## [1] TRUE
# Vetor de comprimento 10 objBASE <- 1:10 # O vetor eh um objeto POO? is.object(objBASE)
## [1] FALSE
diamonds <- ggplot2::diamonds summary(diamonds$carat)
## Min. 1st Qu. Median Mean 3rd Qu. Max. ## 0.2000 0.4000 0.7000 0.7979 1.0400 5.0100
summary(diamonds$cut)
## Fair Good Very Good Premium Ideal ## 1610 4906 12082 13791 21551