Столбцы и строки
Часть раздела Логика и потоки выполнения путешествия по R на Coddy. Урок 43 из 64.
df$col и df[["col"]] возвращают столбец как обычный вектор, поэтому с ним работают все функции для векторов. [[ ]] принимает имя столбца, сохранённое в переменной:
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]])Результат:
[1] 36 22 41
[1] 33
[1] "london" "paris" "rome" Квадратные скобки принимают [row, column], как в матрице. Пустая сторона выбирает всё, а столбцы можно выбирать по имени:
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")])Результат:
name age city
2 bo 22 paris
name city
1 ada london
2 bo paris
3 cy romeОдна ячейка — это df[row, column], и присваивание ей нового значения изменяет это значение. Присваивание целому столбцу работает так же:
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)Вывод:
[1] 41
name age city
1 ada 36 LONDON
2 bo 22 PARIS
3 cy 42 ROMEЧтобы пройти по строкам одну за другой, выполните цикл по seq_len(nrow(df)) и прочитайте каждую ячейку с помощью df[i, "col"] или 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")
}Результат:
ada lives in london
bo lives in paris
cy lives in rome Задание
ЛегкоЗавершите person_card(df, i). Верните по одной строке для каждого столбца в строке i в формате name: bo, с именем столбца и значением в этой строке, в порядке расположения столбцов.
Предоставленный код считывает таблицу из входных данных с помощью read.csv(text = input): первая строка содержит имена столбцов, а каждая следующая строка — одну строку таблицы со значениями, разделёнными запятыми. Последняя строка входных данных содержит i, а код выводит каждую возвращённую строку.
Попробуйте сами
person_card <- function(df, i) {
# Напишите свой код здесь
character(0)
}
# Предоставленный код ввода/вывода: оставьте его как есть
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")
В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.
Все уроки раздела Логика и потоки выполнения
1Строки углублённо
Подстроки с substr()Форматирование с sprintf()Разделение и объединениеПоиск в строкахЗамена текстаПовторение — создание имени пользователя4Матрицы
Создание матрицИндексация матрицСводные данные по строкам и столбцамАрифметика матрицПовторение — схема рассадки7Семейство Apply
lapply и sapplyMap и mapplyFilter и FindReduceПовторение — конвейер обработки данных10Продвинутые конструкции управления
Функция switch()Векторизованный ifelse()repeat и breakРекурсивные функцииПовторение — классификатор оценок2Поиск по ключам и значениям
Поиск в именованных векторахПроверка ключейДобавление и удаление ключейПеребор имёнПовторение — биржа акций5Проект — Журнал оценок
Добавление учениковВыставление оценок3Множества и подсчёт
Уникальные значенияОперации с множествамиПроверка принадлежностиПодсчёт с помощью table()Повторение — гости мероприятия6Функции как значения
Анонимные функцииПередача функцийВозврат функцийЗамыкания с состояниемПовторение — правила скидок9Таблицы данных
Создание таблиц данныхСтолбцы и строкиФильтрация строкДобавление и сортировкаПовторение — отчёт о продажах12Проект — Трекер расходов
Запись расходовОбщие расходыПотренируйтесь самостоятельно: Онлайн-компилятор R