НачатьНачать бесплатно

Функции, возвращающие NULL

Во всех предыдущих упражнениях предполагалось, что функции, применяемые к векторам и спискам, возвращают осмысленный результат. Например, функция tolower() просто возвращает строки, в которых все символы переведены в нижний регистр. Однако так бывает не всегда. Предположим, вы хотите отобразить структуру каждого элемента списка. Для этого можно использовать функцию str(), которая возвращает NULL:

lapply(list(1, "a", TRUE), str)

Этот вызов фактически возвращает список того же размера, что и входной, содержащий исключительно значения NULL. При этом вызов

str(TRUE)

сам по себе выводит в консоль только структуру логического значения, но не NULL. Это объясняется тем, что str() внутренне использует invisible(), которая возвращает невидимую копию результата — в данном случае NULL. Благодаря этому результат не выводится на экран, если он не присвоен переменной.

Что вернёт следующий фрагмент кода (переменная split_low уже доступна в рабочей среде)? Постарайтесь обдумать ответ самостоятельно, прежде чем запускать код в консоли!

lapply(split_low, function(x) {
  if (nchar(x[1]) > 5) {
    return(NULL)
  } else {
    return(x[2])
  }
})

Это упражнение является частью курса

Intermediate R

Посмотреть курс

Практическое интерактивное упражнение

Превратите теорию в практику с помощью одного из наших интерактивных упражнений

Начать упражнение