терабайт. Хочется потихонечку строчка за строчкой считывать и на каждую строчку натравить функцию (допустим которая будет считать сколько было слов плохих упомянуто).
Низкоуровневый вариант на Си предполагает смещение запоминать, и дальше я предполагаю через это как раз начинают работать генераторы, которые просто умеют вернуть следующую строчку сколь угодно большого файла.
Как это в Ар делается?
Убийственный аргумент за генераторы
Это если в файле есть понятие строчки)) в любом случае можно строчку заменить на количество байт и принцип понятен. Не понятно только зачем это делать в R. Можно также накапливать где-то номер строки и читать также по одной. Тем же fread, например. Для всего низкоуровневого есть соответствующие инструменты. Плох тот мастер, у которого в ящике с инструментами один микроскоп)))
Но это в том числе ответ(ный вопрос) на вопрос "а зачем возвращать генераторы"
А это ведёт к тому, что R - микроскоп, а питон - мультитул
он разве не всё разом попытается считать?
Можно поступать строчки и указать, сколько читать. LIMIT OFFSET))
итераторы и в R есть. позаимствованы из питона, но это полезный инструментарий в программировании. он не про векторизацию, а про замену цикла. чем векторизация отличается от итератора. векторизация подразумевает независимое вычисление элементов — можно параллелизировать. итераторы — это безопасный цикл. следующий шаг может быть совершенно непредсказуемым.
да, генераторы очень полезная вещь, особенно когда выходное множество может быть огромным или бесконечным. генератор же просто выдает следующий элемент, не отжирая при этом память. в R это будет похоже скорее всего на closure: https://rlang.r-lib.org/reference/as_closure.html https://www.youtube.com/watch?v=vgYS-F8opgE
А как такой имплементацией запомнить, где в функции остановилось выполнение? Другими словами, yield- ить как
closure сохраняет внутреннее состояние функции
https://t.me/r_in_action/305
Обсуждают сегодня