Есть ли способ выбрать подмножество из объектов (фреймов данных, матриц, векторов) без создания копии выбранных данных?
Я работаю с довольно большими наборами данных, но никогда их не меняю. Однако часто для удобства я выбираю подмножества данных для работы. Создание копии большого подмножества каждый раз очень неэффективно с точки зрения использования памяти, но как обычное индексирование, так и subset
(и, следовательно, xapply()
семейство функций) создают копии выбранных данных. Поэтому я ищу функции или структуры данных, которые могут решить эту проблему.
Некоторые возможные подходы, которые могут соответствовать моим потребностям и, надеюсь, реализованы в некоторых пакетах R:
- механизм копирования при записи, то есть структуры данных, которые копируются только при добавлении или перезаписи существующих элементов;
- неизменяемые структуры данных, которые требуют повторного создания информации об индексации только для структуры данных, но не ее содержимого (например, создание подстроки из строки путем создания только небольшого объекта, который содержит длину и указатель на тот же массив символов) ;
xapply()
аналоги, не создающие подмножеств.
data.table
(предположительно, кто-то скоро появится здесь, чтобы дать вам более подробную информацию ...) - person Ben Bolker   schedule 06.03.2012data.table
кажется хорошим пакетом, но, к сожалению, в большинстве случаев он не соответствует моим потребностям. В частности,data.table
имеет другую модель индексации и значительно усложняет (и замедляет) выполнение выбора, подобногоdata[1:50, 1:10]
(то есть выбор как по строке, так и по столбцу) и многих операций линейной алгебры. Я думал об использовании матриц вместо своих фреймов данных, чтобы сэкономить место и время, но у матриц тоже есть свои ограничения, поэтому я тоже ищу альтернативные варианты. - person ffriend   schedule 06.03.2012DF <- data[1:10000, ]
занимает около 30 секунд, что намного дольше, чем нужно для создания промис-объекта. Также это означает, что структуры данных должны быть постоянными, чтобы не нарушать семантику языка, но это не так. Можешь объяснить, пожалуйста? Я определенно что-то упускаю. (Дайте мне знать, стоит ли опубликовать это как отдельный вопрос.) - person ffriend   schedule 06.03.2012delayedAssign
иforce
, если хотите контролировать этот процесс. Большинство из нас не задумываются об этом (пока это не кусает нас во время оценки функций). - person IRTFM   schedule 06.03.2012