Подтвердить что ты не робот

Julia создает пустой фреймворк и добавляет к нему строки

Я пробовал модуль Julia DataFrames. Меня это интересует, поэтому я могу использовать его для построения простых симуляций в Gadfly. Я хочу иметь возможность итеративно добавлять строки в dataframe, и я хочу инициализировать его как пустую.

Учебники/документация о том, как это сделать, разрежены (в большинстве документации описано, как анализировать импортированные данные).

Добавление к непустому фрейму данных является простым:

df = DataFrame(A = [1, 2], B = [4, 5])
push!(df, [3 6])

Возврат.

3x2 DataFrame
| Row | A | B |
|-----|---|---|
| 1   | 1 | 4 |
| 2   | 2 | 5 |
| 3   | 3 | 6 |

Но для пустого init я получаю ошибки.

df = DataFrame(A = [], B = [])
push!(df, [3, 6])

Сообщение об ошибке:

ArgumentError("Error adding 3 to column :A. Possible type mis-match.")
while loading In[220], in expression starting on line 2

Каков наилучший способ инициализации пустого объекта Julia DataFrame, чтобы вы могли итеративно добавлять элементы к нему позже в цикле for?

4b9b3361

Ответ 1

Массив нулевой длины, определенный с использованием только [], не будет иметь достаточной информации о типе.

julia> typeof([])
Array{None,1}

Итак, чтобы избежать этой проблемы, просто укажите тип.

julia> typeof(Int64[])
Array{Int64,1}

И вы можете применить это к своей проблеме DataFrame

julia> df = DataFrame(A = Int64[], B = Int64[])
0x2 DataFrame

julia> push!(df, [3  6])

julia> df
1x2 DataFrame
| Row | A | B |
|-----|---|---|
| 1   | 3 | 6 |