Menu
Coddy logo textTech

Разделение и объединение

Часть раздела Логика и потоки выполнения путешествия по R на Coddy. Урок 3 из 64.

strsplit(x, split) разрезает строку по каждому разделителю. Она возвращает список с одним вектором символов для каждой входной строки, поэтому используйте [[1]], чтобы получить части одной строки.

csv <- "red,green,blue"
parts <- strsplit(csv, ",")[[1]]
print(parts)
print(length(parts))

Вывод:

[1] "red"   "green" "blue" 
[1] 3

paste() работает наоборот. С помощью collapse она объединяет элементы одного вектора в одну строку, помещая между ними текст collapse. sep помещается между аргументами, элемент за элементом.

words <- c("one", "two", "three")
print(paste(words, collapse = "-"))
print(paste(words, 1:3, sep = "_"))

Вывод:

[1] "one-two-three"
[1] "one_1"   "two_2"   "three_3"

Текст из входных данных часто содержит пробелы вокруг разделителей. trimws() удаляет пробелы в начале и конце каждого элемента:

raw <- "  apples , pears,plums  "
items <- trimws(strsplit(raw, ",")[[1]])
print(items)
print(paste(rev(items), collapse = " | "))

Результат:

[1] "apples" "pears"  "plums" 
[1] "plums | pears | apples"

strsplit() для вектора возвращает по одному элементу списка для каждой строки, поэтому каждая входная строка сохраняет свои фрагменты:

lines <- c("a,b", "c,d,e")
parts <- strsplit(lines, ",")
print(length(parts))
print(parts[[2]])

Вывод:

[1] 2
[1] "c" "d" "e"
challenge icon

Задание

Легко

Завершите hashtags(line). В строке содержатся теги, разделённые запятыми, возможно, с пробелами вокруг них. Верните одну строку, в которой перед каждым тегом стоит #, а теги разделены одиночными пробелами: r, data ,stats превращается в #r #data #stats.

Предоставленный код считывает строку и выводит возвращённое значение.

Попробуйте сами

hashtags <- function(line) {
  # Напишите свой код здесь
  line
}

# Предоставленный код ввода/вывода: оставьте его как есть
input <- suppressWarnings(readLines(file("stdin")))
cat(hashtags(input[1]), sep = "\n")
quiz iconПроверьте себя

В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.

Все уроки раздела Логика и потоки выполнения

Потренируйтесь самостоятельно: Онлайн-компилятор R