What is the easiest way to create a vector with elements c1, c2, c3, …, c1000
What do you mean with elements c1, … ? If they are concatenated letters and numbers you could do:
["c"*string(i) for i in 1:1000]
If you mean that you have variables with these names then could use metaprogramming, e.g. if they are global variable you could use [eval(Symbol(:c, i)) for i = 1:1000].
However, in this case I would strongly urge you to re-think your code structure, and use a data structure like an array to begin with, not zillions of variables with different names.
This generates a 1000-element vector of random values:
julia> c = rand(1000)
1000-element Vector{Float64}:
0.5647389507376179
0.18111369557568624
0.8727956817721915
0.22835918313738857
0.2497456673875318
0.9181345802141495
0.6070152421017295
0.7392933645606421
0.6196225753003001
0.280834358470918
0.5100254226676332
0.9816413192259156
0.6700354181216701
⋮
0.7927264973496545
0.17482774804441292
0.5294179310633541
0.858583692569896
0.1277444673489978
0.9421766813356514
0.48838842851956077
0.3351709485105858
0.4807149298155149
0.3762423751393996
0.45065876319192155
0.09364657772281326
You can access c_1, c_2, c_3, and c_{1000} by using square brackets like so:
julia> c[1], c[2], c[3], c[1000]
(0.5647389507376179, 0.18111369557568624, 0.8727956817721915, 0.09364657772281326)
If there’s some relation between the vector index i and the element values of c, you can use an array comprehension to populate c in accordance with that. For example, the elements of this vector follow the relation, c_i = i^2.
julia> c = [i^2 for i = 1:1000]
1000-element Vector{Int64}:
1
4
9
16
25
36
49
64
81
100
121
144
169
⋮
978121
980100
982081
984064
986049
988036
990025
992016
994009
996004
998001
1000000
A post was split to a new topic: Encouraging clearer questions on discourse?
I’d note that common practice is to initialize an array with e.g. Vector{Type}(undef, 1000), rather than rand(1000). rand will take more time to generate the random numbers and is conceptually less clear. ones(1000) also works.
Nooo don’t introduce a newbie to undef allocation yet! ![]()
It’s usually best to initiate/fill the array immediately upon allocating it, which is what zeros, ones, fill, rand, and comprehensions do.
Consider undef allocation for serious optimization work, but do it with caution because if you do it wrong, bad things can happen ![]()