Подавление скобок в функции, использующей оператор канала - PullRequest
0 голосов
/ 29 мая 2020

Может кто-нибудь объяснить, почему я должен убрать скобки для функции is.factor в показанной ниже команде? Данные о студентах были прочитаны из файла .csv. Я вижу структуру данных о студентах и ​​хочу выбрать только факторные переменные. Команда работает нормально, но я не понимаю, почему не могу писать скобки. Я видел пример на форуме. Извините, если вопрос глупый или уже задавался раньше. Мне не удалось найти подобный вопрос.

studentData%>% select_if (is.factor)

1 Ответ

0 голосов
/ 29 мая 2020

Это не канал, %>%, который требует, чтобы вы «убрали скобки, это select_if. Из документации:

.predicate» Функция предиката, применяемая к столбцам или логический вектор. Выбираются переменные, для которых .predicate равно или возвращает TRUE. Этот аргумент передается в rlang :: as_function () и, таким образом, поддерживает лямбда-функции в стиле quosure и строки, представляющие имена функций. "

Здесь вы не оцениваете функцию. Вы передаете объект R. ( Функции являются объектами, как data.frames или скаляры). Вычисление происходит позже, в нутри select_if. Включение скобок укажет R оценить функцию во время выполнения вызова select_if. Это не правильно. Требуется проверка позже.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...