Menu
Coddy logo textTech

Resumos de Linhas e Colunas

Parte da seção Lógica e Fluxo do Journey de R da Coddy. Lição 19 de 64.

rowSums() e rowMeans() retornam um resultado por linha; colSums() e colMeans(), um por coluna. Aqui, cada linha representa um estudante e cada coluna, um teste:

scores <- matrix(c(80, 90, 70, 60, 75, 85), nrow = 2, byrow = TRUE)
print(rowMeans(scores))
print(colSums(scores))

Saída:

[1] 80.00000 73.33333
[1] 140 165 155

Para qualquer outro resumo, apply(m, 1, f) chama f em cada linha e apply(m, 2, f) em cada coluna:

scores <- matrix(c(80, 90, 70, 60, 75, 85), nrow = 2, byrow = TRUE)
print(apply(scores, 1, max))
print(apply(scores, 2, min))

Saída:

[1] 90 85
[1] 60 75 70

Combine um resumo com which.max() para descobrir qual linha ou coluna vence:

scores <- matrix(c(80, 90, 70, 60, 75, 85), nrow = 2, byrow = TRUE)
best_test <- which.max(colMeans(scores))
print(best_test)
print(round(rowMeans(scores), 1))

Saída:

[1] 2
[1] 80.0 73.3

apply() também aceita uma função que você escreve na hora com function(r). Aqui, ela conta os valores maiores que 5 em cada linha:

m <- matrix(c(3, 8, 1, 9, 2, 7), nrow = 2, byrow = TRUE)
print(apply(m, 1, function(r) sum(r > 5)))

Saída:

[1] 1 2
challenge icon

Desafio

Fácil

Complete class_report(scores). Cada linha de scores representa um aluno e cada coluna, uma prova. Retorne uma linha por aluno, Student 1: 81.7, com a média do aluno arredondada para uma casa decimal. Adicione uma última linha Best test: seguida pelo número da coluna com a maior média.

O código fornecido lê uma matriz de uma linha: as linhas são separadas por ; e os valores de uma linha por ,; portanto, 1,2;3,4 é uma matriz com as linhas 1 2 e 3 4. O código imprime cada linha retornada.

Experimente você mesmo

class_report <- function(scores) {
  # Escreva seu código aqui
  character(0)
}

# Código de entrada/saída fornecido: mantenha-o como está
input <- suppressWarnings(readLines(file("stdin")))
parse_matrix <- function(line) {
  rows <- strsplit(line, ";")[[1]]
  matrix(as.numeric(unlist(strsplit(rows, ","))), nrow = length(rows), byrow = TRUE)
}
cat(class_report(parse_matrix(input[1])), sep = "\n")
quiz iconTeste seus conhecimentos

Esta lição inclui um quiz rápido. Comece a lição para respondê-lo e acompanhar seu progresso.

Todas as lições de Lógica e Fluxo

Pratique por conta própria: Compilador de R online