I have to update values of a number of vectors, say s1 … s20. I need a way to access arbitrarily s_n, the nth index of variable s.
s1=[1 2 3]
s2=[11 12 13 14 15]
# calculations lead to "n" and "val"
n=2
val=16
# I append "val" to the "n"th variable "s".
if n == 1
append!(s1, val)
elseif n == 2
append!(s2, val)
# elseif ... same for n=3, n=4 ...
end
I would like to reduce code duplication. I found on this forum : How to change the name of a variable in a for loop So I rewrote as:
@eval append!($(Symbol(:s,n)),value)
It works, but it is 10x slower (I have a loop over millions of data points).
I was previously working with scilab. The same program as above can be done in scilab by defining variable s as a list, in which the elements of any type can be indexed.
// Scilab 6.1.1 console
s=list()
s(1)=[1 2 3]
s(2)=[11 12 13 14 15]
// ... we can append to s by calling s($+1), for example in a loop
n=2
val=16
// we call the "n"th index of list "s" and append "val" in the end
s(n)($+1)=val
Is it possible to do something similar in julia? I mean defining a heterogeneous list or a vector of vectors where each of the elements can grow dynamically? (without compromising too much of execution performance)