Colunas e Linhas
Parte da seção Lógica e Fluxo do Journey de R da Coddy. Lição 43 de 64.
df$col e df[["col"]] retornam uma coluna como um vetor simples, portanto toda função de vetor funciona nela. [[ ]] aceita um nome de coluna armazenado em uma variável:
people <- data.frame(
name = c("ada", "bo", "cy"),
age = c(36, 22, 41),
city = c("london", "paris", "rome")
)
print(people$age)
print(mean(people$age))
col <- "city"
print(people[[col]])Saída:
[1] 36 22 41
[1] 33
[1] "london" "paris" "rome" Os colchetes usam [row, column], como uma matriz. Um lado vazio seleciona tudo, e as colunas podem ser escolhidas pelo nome:
people <- data.frame(
name = c("ada", "bo", "cy"),
age = c(36, 22, 41),
city = c("london", "paris", "rome")
)
print(people[2, ])
print(people[, c("name", "city")])Saída:
name age city
2 bo 22 paris
name city
1 ada london
2 bo paris
3 cy romeUma célula é df[row, column], e atribuir um valor a ela altera seu conteúdo. Atribuir a uma coluna inteira funciona da mesma maneira:
people <- data.frame(
name = c("ada", "bo", "cy"),
age = c(36, 22, 41),
city = c("london", "paris", "rome")
)
print(people[3, "age"])
people[3, "age"] <- 42
people$city <- toupper(people$city)
print(people)Saída:
[1] 41
name age city
1 ada 36 LONDON
2 bo 22 PARIS
3 cy 42 ROMEPara percorrer as linhas uma por uma, use um loop sobre seq_len(nrow(df)) e leia cada célula com df[i, "col"] ou df$col[i]:
people <- data.frame(
name = c("ada", "bo", "cy"),
age = c(36, 22, 41),
city = c("london", "paris", "rome")
)
for (i in seq_len(nrow(people))) {
cat(people$name[i], "lives in", people[i, "city"], "\n")
}Saída:
ada lives in london
bo lives in paris
cy lives in rome Desafio
FácilComplete person_card(df, i). Retorne uma linha por coluna para a linha i, name: bo, com o nome da coluna e o valor nessa linha, na ordem das colunas.
O código fornecido lê a tabela da entrada com read.csv(text = input): a primeira linha contém os nomes das colunas e cada linha seguinte é uma linha, com valores separados por vírgulas. A última linha da entrada contém i, e o código imprime cada linha retornada.
Experimente você mesmo
person_card <- function(df, i) {
# Escreva seu código aqui
character(0)
}
# Código de entrada/saída fornecido: mantenha-o como está
input <- suppressWarnings(readLines(file("stdin")))
df <- read.csv(text = input[-length(input)])
i <- as.numeric(input[length(input)])
cat(person_card(df, i), sep = "\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