I have read, что добавление к векторам в R - плохая практика. В этом случае, что мне делать, когда я хочу создать вектор, но я не знаю его длины раньше времени?Как создать вектор в R, если вы не знаете длины раньше времени?
Я смотрю на фрейм данных, содержащий записи о том, когда люди находятся в определенном месте. Каждая запись содержит информацию о человеке и время, когда они были рядом, но может быть много записей для одного человека.
# loc id time
# 1: z A 00:00
# 2: z A 00:01
# 3: z B 00:02
# 4: z A 00:02
# 5: z C 00:05
# 6: z C 00:07
# 7: z A 00:08
# 8: z A 00:09
# 9: z C 00:09
#10: z C 00:10
Я хочу, чтобы создать новый фрейм данных, в которой каждый элемент является «посетить» человек, сопоставляя записи из одного человека, которые близки по времени.
# loc id starttime endtime
# 1: z A 00:00 00:02
# 2: z C 00:05 00:07
# 3: z A 00:08 00:09
# 4: z C 00:09 00:10
Они могут быть 50 записей для одного человека в первом кадре данных, которые могут быть составлены в 3 «визитов» в новом кадре данных. Я не знаю заранее, сколько «посещений» есть. Итак, как мне нужно создавать этот фрейм данных?
Я знаю rbind, но в этом случае я буду привязывать каждую строку по одной. Это хорошая идея?
Другой вариант состоит в том, чтобы пройти через первый кадр данных дважды, один раз, чтобы выяснить, насколько велика возможность сделать второй фрейм данных и снова заполнить его, но это кажется еще более неэффективным.
Вы только что сделали, а затем добавите к нему. Вот как это делают динамические языки. Это имеет большее значение в целом при расширении больших списков, требующих копий. Более маленькие векторы и значение R уже закладываются за вашей спиной. –
Это звучит немного похоже на то, что вы просто хотите «расплавить» и «фильтровать» ... без конкретного примера данных, однако это трудно понять. –
Предлагаю вам главу 2 «Растущие объекты», это именно то, о чем вы просите :) http://www.burns-stat.com/pages/Tutor/R_inferno.pdf Решение, которое он предлагает, - это предложение, предложенное компанией @Roland, но он анализирует и другие методы с системным временем, используемым для выполнения определенных задач (вырастает в куске против rbind против индекса). Вы cn – Eugen