Я пытаюсь создать фрейм данных из списка «записей», то есть для каждой строки (сравните с загрузкой файла CSV, но теперь из файла сценария R), но все примеры, которые я могу найти, создают фрейм данных из векторов, содержащих отдельные столбцы.
Самое близкое, что я обнаружил, - это начать с пустого фрейма данных, а затем добавить строки, используя rbind и list, но затем исходные имена столбцов теряются, и все столбцы имеют класс символ.
> generations <- data.frame(launch_date=as.Date(integer(), origin="1970-01-01"), generation=character(), stringsAsFactors=FALSE)
> generations
[1] launch_date generation
<0 rows> (or 0-length row.names)
Все хорошо здесь. А теперь:
> generations <- rbind(generations,list("2010-09-01", "Generation 1"), stringsAsFactors=FALSE)
> generations
X.2010.09.01. X.Generation.1.
1 2010-09-01 Generation 1
> str(generations)
'data.frame': 1 obs. of 2 variables:
$ X.2010.09.01. : chr "2010-09-01"
$ X.Generation.1.: chr "Generation 1"
Оригинальные имена столбцов и классы пропали: (
Причина, по которой нужно что-то подобное, состоит в том, что хранение данных в отдельных векторах является громоздким и приводит к ошибкам. Идея здесь состояла в том, чтобы использовать rbind с кучей списков, где даты и имена могут поддерживаться вместе (т.е. попарно, для каждой «записи» / строки).
Как go об этом?