Skip to content
This repository was archived by the owner on May 5, 2019. It is now read-only.

Commit f5a53a1

Browse files
committed
add docstring for vcat
1 parent 4a939fe commit f5a53a1

File tree

1 file changed

+23
-6
lines changed

1 file changed

+23
-6
lines changed

src/abstractdatatable/abstractdatatable.jl

Lines changed: 23 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -710,11 +710,30 @@ Base.hcat(dt1::AbstractDataTable, dt2::AbstractDataTable) = hcat!(dt[:, :], dt2)
710710
Base.hcat(dt::AbstractDataTable, x, y...) = hcat!(hcat(dt, x), y...)
711711
Base.hcat(dt1::AbstractDataTable, dt2::AbstractDataTable, dtn::AbstractDataTable...) = hcat!(hcat(dt1, dt2), dtn...)
712712

713-
# vcat only accepts DataTables. Finds union of columns, maintaining order
714-
# of first dt. Missing data become null values.
713+
"""
714+
vcat(dts::AbstractDataTable...)
715715
716-
Base.vcat(dt::AbstractDataTable) = dt
716+
Vertically concatenate `AbstractDataTables` with matching columns.
717+
718+
```julia
719+
julia> dt1 = DataTable(A=1:3, B=1:3); dt2 = DataTable(A=4:6, B=4:6); dt3 = DataTable(A=7:9, B=7:9, C=7:9);
717720
721+
julia> vcat(dt1, dt2)
722+
6×2 DataTables.DataTable
723+
│ Row │ A │ B │
724+
├─────┼───┼───┤
725+
│ 1 │ 1 │ 1 │
726+
│ 2 │ 2 │ 2 │
727+
│ 3 │ 3 │ 3 │
728+
│ 4 │ 4 │ 4 │
729+
│ 5 │ 5 │ 5 │
730+
│ 6 │ 6 │ 6 │
731+
732+
julia> vcat(dt1, dt2, dt3)
733+
ERROR: ArgumentError: columns (A, B) of input(s) (1, 2) != columns (A, B, C) of input(s) (3)
734+
```
735+
"""
736+
Base.vcat(dt::AbstractDataTable) = dt
718737
function Base.vcat(dts::AbstractDataTable...)
719738
isempty(dts) && return DataTable()
720739
allheaders = map(names, dts)
@@ -723,15 +742,13 @@ function Base.vcat(dts::AbstractDataTable...)
723742
uniqueheaders = unique(allheaders[notempty])
724743
if length(uniqueheaders) == 0
725744
return DataTable()
726-
elseif length(unique(map(length, uniqueheaders))) > 1
745+
elseif length(uniqueheaders) > 1
727746
estring = Vector{String}(length(uniqueheaders))
728747
for (i,u) in enumerate(uniqueheaders)
729748
indices = string.(find(x -> x == u, allheaders))
730749
estring[i] = "columns ($(join(u, ", "))) of input(s) ($(join(indices, ", ")))"
731750
end
732751
throw(ArgumentError(join(estring, " != ")))
733-
elseif length(uniqueheaders) > 1
734-
throw(ArgumentError("Column names do not match. Use `rename!` or `names!` to adjust columns names. Resolve column(s): $(setdiff(union(allheaders...), intersect(allheaders...)))"))
735752
else
736753
header = uniqueheaders[1]
737754
dts_to_vcat = dts[notempty]

0 commit comments

Comments
 (0)