R
Nesta seção:
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
Documentação: https://www.r-project.org/other-docs.html
Bioconductor: https://www.bioconductor.org/
RStudio Cheat Sheets: https://www.rstudio.com/resources/cheatsheets/
Ver também
Anaconda - Python para ciência de dados
MATLAB - Ambiente de computação numérica
Processando Simulações - Como submeter jobs