Home > Enterprise >  ArgumentError: columns argument must be a vector of AbstractVector objects
ArgumentError: columns argument must be a vector of AbstractVector objects

Time:01-16

I want to make a DataFrame in Julia with one column, but I get an error:

julia> using DataFrames

julia> r = rand(3);

julia> DataFrame(r, ["col1"])
ERROR: ArgumentError: columns argument must be a vector of AbstractVector objects

Why?

Update:
I figured out that I could say the following:

julia> DataFrame(reshape(r, :, 1), ["col1"])
3×1 DataFrame
 Row │ col1     
     │ Float64  
─────┼──────────
   1 │ 0.800824
   2 │ 0.989024
   3 │ 0.722418

But it's not straightforward. Is there any better way? Why can't I easily create a DataFrame object from a Vector?

CodePudding user response:

Why can't I easily create a DataFrame object from a Vector?

Because it would be ambiguous with the syntax where you pass positional arguments the way you tried. Many popular tables are vectors.

However, what you can write is just:

julia> r = rand(3);

julia> DataFrame(col1=r)
3×1 DataFrame
 Row │ col1
     │ Float64
─────┼────────────
   1 │ 0.00676619
   2 │ 0.554207
   3 │ 0.394077

to get what you want.

An alternative more similar to your code would be:

julia> DataFrame([r], ["col1"])
3×1 DataFrame
 Row │ col1
     │ Float64
─────┼────────────
   1 │ 0.00676619
   2 │ 0.554207
   3 │ 0.394077
  • Related