Criando Matrizes
Parte da seção Lógica e Fluxo do Journey de R da Coddy. Lição 17 de 64.
Uma matriz é um vetor organizado em linhas e colunas, e cada valor tem o mesmo tipo. matrix(data, nrow = ...) a preenche coluna por coluna por padrão:
m <- matrix(1:6, nrow = 2)
print(m)Saída:
[,1] [,2] [,3]
[1,] 1 3 5
[2,] 2 4 6Adicione byrow = TRUE para preenchê-la linha por linha, o que corresponde a dados escritos uma linha por linha:
m <- matrix(1:6, nrow = 2, byrow = TRUE)
print(m)Saída:
[,1] [,2] [,3]
[1,] 1 2 3
[2,] 4 5 6Informe nrow ou ncol; R calcula o outro a partir do comprimento dos dados.
dim(m) retorna o número de linhas e colunas, e nrow() e ncol() retornam cada um deles separadamente. matrix(0, nrow = 2, ncol = 3) repete um único valor para preencher a matriz:
m <- matrix(0, nrow = 2, ncol = 3)
print(dim(m))
print(nrow(m) * ncol(m))
print(length(m))Saída:
[1] 2 3
[1] 6
[1] 6rbind() empilha vetores como linhas e cbind() como colunas, o que cria uma matriz a partir de vetores separados:
a <- c(1, 2, 3)
b <- c(4, 5, 6)
print(rbind(a, b))
print(dim(cbind(a, b)))Saída:
[,1] [,2] [,3]
a 1 2 3
b 4 5 6
[1] 3 2Desafio
FácilComplete make_grid(values, n_cols). Retorne uma matriz com n_cols colunas que contenha values linha por linha. O número de valores é sempre um múltiplo de n_cols.
O código fornecido lê os valores como uma linha separada por vírgulas e n_cols da linha seguinte. Ele imprime cada linha da matriz retornada em sua própria linha e, em seguida, seu tamanho como rows x columns.
Experimente você mesmo
make_grid <- function(values, n_cols) {
# Escreva seu código aqui
matrix(values)
}
# Código de entrada/saída fornecido: mantenha-o como está
input <- suppressWarnings(readLines(file("stdin")))
values <- as.numeric(strsplit(input[1], ",")[[1]])
m <- make_grid(values, as.numeric(input[2]))
for (i in seq_len(nrow(m))) cat(m[i, ], "\n")
cat(nrow(m), "x", ncol(m), "\n")
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
1Strings em Profundidade
Substrings com substr()Formatação com sprintf()Dividindo e UnindoPesquisando StringsSubstituindo TextoRecapitulação - Criador de Nome de Usuário4Matrizes
Criando MatrizesIndexando MatrizesResumos de Linhas e ColunasAritmética de MatrizesRecapitulação - Tabela de Assentos10Fluxo de Controle Avançado
A Função switch()ifelse() Vetorizadorepeat e breakFunções RecursivasRevisão — Classificador de Notas2Consultas de Chave-Valor
Consultas em Vetores NomeadosVerificando ChavesAdicionando e Removendo ChavesPercorrendo NomesRecapitulação - Mesa de Ações5Projeto - Boletim de Notas
Adicionando AlunosRegistrando Notas3Conjuntos e Contagem
Valores ÚnicosOperações com ConjuntosTestes de PertinênciaContagem com table()Recapitulação - Convidados do Evento6Funções como Valores
Funções AnônimasPassando FunçõesRetornando FunçõesClosures com EstadoRecapitulação - Regras de Desconto9Data Frames
Criando Data FramesColunas e LinhasFiltrando LinhasAdicionando e OrdenandoRecapitulação - Relatório de Vendas12Projeto - Rastreador de Despesas
Registro de DespesasGastos TotaisPratique por conta própria: Compilador de R online