2016-01-12 2 views
1

Я работаю с Джулией, и теперь мне нужно использовать тип TimeArray в пакете TimeSeries.
julia: как объявить многомерный массив

Вот конструктор TimeArray:

TimeArray(timestamp::Vector{Date{ISOCalendar}}, values::Array{T,N}, colnames::Vector{ASCIIString}) 

Так что я сделать тест здесь:

dts = [Date("2015-01-06"), Date("2015-01-07")] 
vls = [[1, 2] [3, 4]] 
cnms = ["v1", "v2"] 
ta = TimeArray(dts, vls, cnms) 

Он работает очень хорошо.

Теперь у меня есть некоторые массивы, как это:

[1, 2] 
[3, 4] 

Это означает, что я должен создать vls выше этих массивов.

Я пытался так:

v1 = [1, 2] 
v2 = [3, 4] 
vls = [] 
push!(vls, v1) 
push!(vls, v2) 

Однако я не могу создать любой TimeArray с vls здесь. Я получил эту ошибку:

column names must match width of array

Я также напечатал два vls.
Первый:

[1 3 
2 4] 

Второй является:
Любой [[1,2], [3,4]]

Поэтому я считаю, я должен построить первый vls, вместо второго, но я не знаю, как это сделать.

ответ

4

Проблема заключается в том, что ваш подход push!() не создает матрицу 2x2, а вместо нее Vector {Any, 2}. Таким образом, size(vls,2) равен 1, что не соответствует length(cnms), что равно 2.

Возможно, вы ищете hcat(v1,v2)?

Смежные вопросы