Застосування функцій, що повертають NULL
У всіх попередніх вправах припускалося, що функції, застосовані до векторів і списків, справді повертають змістовний результат. Наприклад, функція tolower() просто повертає рядки з літерами у нижньому регістрі. Так буде не завжди. Припустімо, ви хочете відобразити структуру кожного елемента списку. Для цього можна використати функцію str(), яка повертає NULL:
lapply(list(1, "a", TRUE), str)
Цей виклик насправді повертає список того самого розміру, що й вхідний список, який містить лише значення NULL. З іншого боку, виклик
str(TRUE)
сам по собі лише друкує структуру логічного значення в консолі, а не NULL. Це тому, що str() під капотом використовує invisible(), яка повертає невидиму копію значення, що повертається, у цьому випадку NULL. Це запобігає виведенню, якщо результат str() не присвоєно змінній.
Що поверне наступний фрагмент коду (об'єкт split_low уже доступний у робочому середовищі)? Спробуйте обміркувати результат, перш ніж просто запускати його в консолі!
lapply(split_low, function(x) {
if (nchar(x[1]) > 5) {
return(NULL)
} else {
return(x[2])
}
})
Ця вправа є частиною курсу
Середній рівень R
Практична інтерактивна вправа
Перетворіть теорію на практику за допомогою однієї з наших інтерактивних вправ
Почати вправу