R

Descrição

De acordo com a página do R, R é um ambiente de software livre para computação estatística e gráficos. Compila e executa em uma ampla variedade de plataformas UNIX, Windows e MacOS.

Versões Disponíveis

  • R/4.0.2 (default)

Carregando o Módulo

# Carregar R
module load R/4.0.2

# Verificar instalação
R --version

Submissão de Jobs Seriais

submit_r_serial.sh
#!/bin/bash
#SBATCH -J r_serial
#SBATCH -N 1
#SBATCH -n 1
#SBATCH -t 24:00:00
#SBATCH --mem=8G

export INPUT="analysis.R"
export OUTPUT="analysis.out"

module load R/4.0.2

job-nanny Rscript analysis.R > analysis.out

Submissão de Jobs com Paralelismo

submit_r_parallel.sh
#!/bin/bash
#SBATCH -J r_parallel
#SBATCH -N 1
#SBATCH -c 8
#SBATCH -t 48:00:00
#SBATCH --mem=32G

export INPUT="parallel_analysis.R"
export OUTPUT="parallel_results/"

module load R/4.0.2

job-nanny Rscript parallel_analysis.R

Exemplo de Script R

analysis.R
# Análise estatística básica
library(ggplot2)

# Carregar dados
data <- read.csv("dados.csv")

# Estatísticas descritivas
summary_stats <- summary(data)
write.csv(as.data.frame(summary_stats), "summary.csv")

# Regressão linear
model <- lm(y ~ x, data=data)
summary_model <- summary(model)
capture.output(summary_model, file="regression.txt")

# Gráficos
p <- ggplot(data, aes(x=x, y=y)) +
     geom_point() +
     geom_smooth(method="lm") +
     theme_minimal() +
     labs(title="Regressão Linear", x="X", y="Y")

ggsave("regression_plot.png", p, width=8, height=6)

# Salvar resultados
saveRDS(model, "model.rds")

Exemplo com Paralelismo

parallel_analysis.R
library(parallel)
library(foreach)
library(doParallel)

# Detectar número de núcleos
ncores <- detectCores()
cat("Número de núcleos disponíveis:", ncores, "\n")

# Registrar cluster paralelo
cl <- makeCluster(ncores)
registerDoParallel(cl)

# Simulação de Monte Carlo paralela
nsim <- 10000
results <- foreach(i=1:nsim, .combine=c) %dopar% {
    # Simulação
    x <- rnorm(1000)
    mean(x)
}

# Estatísticas
cat("Média das médias:", mean(results), "\n")
cat("Desvio padrão:", sd(results), "\n")

# Histograma
png("histogram.png")
hist(results, breaks=50, main="Distribuição das médias",
     xlab="Média", ylab="Frequência")
dev.off()

# Parar cluster
stopCluster(cl)

Job Array para Múltiplas Análises

submit_r_array.sh
#!/bin/bash
#SBATCH -J r_array
#SBATCH --array=1-10
#SBATCH -N 1
#SBATCH -n 1
#SBATCH -t 12:00:00
#SBATCH --mem=8G

FILES=($(ls data_*.csv))
FILE=${FILES[$SLURM_ARRAY_TASK_ID-1]}
OUTPUT_DIR="results_${FILE%.csv}"

export INPUT="$FILE"
export OUTPUT="$OUTPUT_DIR/"

module load R/4.0.2

mkdir -p $OUTPUT_DIR
cd $OUTPUT_DIR

cat > process_${SLURM_ARRAY_TASK_ID}.R << EOF
# Processar arquivo $FILE
data <- read.csv("../$FILE")

# Análise
result <- list(
    file = "$FILE",
    mean = mean(data$value, na.rm=TRUE),
    sd = sd(data$value, na.rm=TRUE),
    median = median(data$value, na.rm=TRUE),
    min = min(data$value, na.rm=TRUE),
    max = max(data$value, na.rm=TRUE),
    n = sum(!is.na(data$value))
)

# Salvar
saveRDS(result, "results.rds")

# Relatório texto
sink("report.txt")
cat("Arquivo:", result$file, "\n")
cat("Média:", result$mean, "\n")
cat("Desvio padrão:", result$sd, "\n")
cat("Mediana:", result$median, "\n")
cat("Mínimo:", result$min, "\n")
cat("Máximo:", result$max, "\n")
cat("N (não-NA):", result$n, "\n")
sink()
EOF

job-nanny Rscript process_${SLURM_ARRAY_TASK_ID}.R

Instalação de Pacotes

install_r_packages.sh
#!/bin/bash
#SBATCH -J install_r_pkgs
#SBATCH -N 1
#SBATCH -n 1
#SBATCH -t 01:00:00
#SBATCH --mem=4G

module load R/4.0.2

# Instalar pacotes no diretório pessoal
cat > install_packages.R << 'EOF'
# Definir diretório de instalação
lib_path <- Sys.getenv("R_LIBS_USER")
if (!dir.exists(lib_path)) dir.create(lib_path, recursive=TRUE)

# Instalar pacotes
packages <- c(
    "tidyverse",
    "ggplot2",
    "dplyr",
    "tidyr",
    "data.table",
    "parallel",
    "doParallel",
    "foreach",
    "caret",
    "randomForest",
    "glmnet",
    "e1071"
)

install.packages(packages, lib=lib_path, repos="https://cran.r-project.org")

# Verificar instalação
installed <- installed.packages()
cat("\nPacotes instalados:\n")
print(installed[packages, "Version"])
EOF

job-nanny Rscript install_packages.R

Bioconductor

install_bioc.sh
#!/bin/bash
#SBATCH -J install_bioc
#SBATCH -N 1
#SBATCH -n 1
#SBATCH -t 01:00:00
#SBATCH --mem=4G

module load R/4.0.2

cat > install_bioc.R << 'EOF'
if (!require("BiocManager", quietly = TRUE))
    install.packages("BiocManager")

# Instalar pacotes Bioconductor
BiocManager::install(c(
    "Biostrings",
    "GenomicRanges",
    "DESeq2",
    "edgeR",
    "limma",
    "clusterProfiler",
    "pathview"
))

# Verificar instalação
library(Biostrings)
library(DESeq2)
cat("Pacotes Bioconductor instalados com sucesso!\n")
EOF

job-nanny Rscript install_bioc.R

Referências

Ver também