Удалить весь столбец из data.frame в R
Кто-нибудь знает, как удалить весь столбец из data.frame в R? Например, если мне дадут этот data.frame:
И я хочу удалить вторую колонку.
6 ответов
Вы можете установить его на NULL .
Как указано в комментариях, вот некоторые другие возможности:
Вы можете удалить несколько столбцов с помощью:
Однако будьте осторожны с подмножеством матриц, так как вы можете получить вектор:
С его помощью вы можете удалить column и сохранить variable в другом variable .
Есть несколько вариантов удаления одного или нескольких столбцов с помощью dplyr::select() и некоторых вспомогательных функций. Вспомогательные функции могут быть полезны, потому что некоторые из них не требуют именования всех определенных столбцов, которые нужно удалить. Обратите внимание, что для удаления столбцов с помощью select() вам необходимо использовать начальный — , чтобы инвертировать имена столбцов.
Использование примеров данных dplyr::starwars для некоторого разнообразия имен столбцов:
Вы также можете перейти по номеру столбца:
Опубликованные ответы очень хороши при работе с data.frame . Однако эти задачи могут быть довольно неэффективными с точки зрения памяти. При больших объемах данных удаление столбца может занять необычно много времени и / или выйти из строя из-за ошибок out of memory . Пакет data.table помогает решить эту проблему с помощью оператора := :
Я должен собрать более крупный пример, чтобы показать различия. Я обновлю этот ответ в какой-то момент.
(Для полноты) Если вы хотите удалить столбцы по имени, вы можете сделать это:
Включение drop = F гарантирует, что результатом все равно будет data.frame , даже если останется только один столбец.
Чтобы удалить один или несколько столбцов по имени, когда имена столбцов известны (а не во время выполнения), мне нравится синтаксис subset() . Например. для фрейма данных
Чтобы удалить только столбец a , вы могли бы сделать
И чтобы удалить столбцы b и d , вы могли бы сделать
Вы можете удалить все столбцы между d и b с помощью:
Как я сказал выше, этот синтаксис работает только тогда, когда известны имена столбцов. Это не сработает, если, скажем, имена столбцов определены программно (т.е. присвоены переменной). Я воспроизведу это предупреждение из документации ?subset :
Предупреждение:
Это удобная функция, предназначенная для интерактивного использования. Для программирования лучше использовать стандартные функции подмножества, такие как ‘[‘, и, в частности, нестандартная оценка аргумента ‘подмножество’ может иметь непредвиденные последствия.
Удалить весь столбец из data.frame в R
Кто-нибудь знает, как удалить весь столбец из data.frame в R? Например, если мне дают эти data.frame:
и я хочу удалить 2-й столбец.
Вы можете установить его на NULL .
Как указано в комментариях, вот еще несколько возможностей:
Вы можете удалить несколько столбцов с помощью:
Будьте осторожны с подмножеством матриц, поскольку вы можете получить вектор:
Чтобы удалить один или несколько столбцов по имени, когда имена столбцов известны (в отличие от определения во время выполнения), мне нравится subset() синтаксис. Например, для фрейма данных
удалить только a столбец, который вы могли бы сделать
и удалить b и d столбцы , которые вы могли бы сделать
Вы можете удалить все столбцы между d и b с:
Как я уже говорил выше, этот синтаксис работает только тогда, когда известны имена столбцов. Это не будет работать, когда, скажем, имена столбцов определяются программно (то есть присваиваются переменной). Я воспроизведу это предупреждение из ?subset документации:
Предупреждение:
Это удобная функция, предназначенная для интерактивного использования. Для программирования лучше использовать стандартные функции поднабора, такие как ‘[‘, и, в частности, нестандартная оценка аргумента ‘подмножество’ может иметь непредвиденные последствия.
Удаление нескольких столбцов из R data.table с параметром для удаляемых столбцов
Я пытаюсь манипулировать рядом data.tables аналогичным образом и хотел бы написать функцию для этого. Я хотел бы передать параметр, содержащий список столбцов, в которых будут выполняться операции. Это прекрасно работает, когда векторное объявление столбцов находится в левой части оператора :=, но не в том случае, если оно объявлено ранее (или передано в функцию). Следующий код показывает проблему.
Ошибка: «Добавление нового столбца« colsToDelete », затем присвоение NULL (удаление его)». Так ясно, что он интерпретирует «colsToDelete» как новое имя столбца.
Та же проблема возникает при выполнении чего-либо в этом направлении
Я новичок в R, но у меня больше опыта работы с некоторыми другими языками, так что это может быть глупый вопрос.