Skip to content

Commit c1caf54

Browse files
Merge branch 'master' into GHA-locales
2 parents dc269ad + 99142f3 commit c1caf54

5 files changed

Lines changed: 147 additions & 120 deletions

File tree

NEWS.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,8 @@
4242

4343
10. `subset()` method for data.tables supports `drop = TRUE` for consistency to data.frame, [#7859](https://github.com/Rdatatable/data.table/issues/7859). Thanks @MichaelChirico for the report and fix.
4444

45+
11. `setorderv()` now accepts a named vector for the `order` argument. When provided, the names are used to identify the columns, allowing the `cols` argument to be omitted, [#6932](https://github.com/Rdatatable/data.table/issues/6932). Thanks to @MichaelChirico for the suggestion and @venom1204 for the implementation.
46+
4547
### BUG FIXES
4648

4749
1. `fread()` with `skip=0` and `(header=TRUE|FALSE)` no longer skips the first row when it has fewer fields than subsequent rows, [#7463](https://github.com/Rdatatable/data.table/issues/7463). Thanks @emayerhofer for the report and @ben-schwen for the fix.

R/setkey.R

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -256,6 +256,10 @@ setorder = function(x, ..., na.last=FALSE)
256256

257257
setorderv = function(x, cols = colnames(x), order=1L, na.last=FALSE)
258258
{
259+
if (missing(cols) && !is.null(names(order))) {
260+
cols = names(order)
261+
if (anyDuplicated(cols)) stopf("order argument has named duplicates: %s", brackify(duplicated_values(cols)))
262+
}
259263
if (is.null(cols)) return(x)
260264
if (!is.data.frame(x)) stopf("x must be a data.frame or data.table")
261265
na.last = as.logical(na.last)

inst/tests/tests.Rraw

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21939,3 +21939,16 @@ test(2384.3, print(DT, na.print=".", topn=2, col.names="none", row.names=FALSE,
2193921939
output=c(" .\n e\n ---\n w\n ."))
2194021940
DT = data.table(a=c("x\ny","z"), b=1:2)
2194121941
test(2384.4, print(DT, col.names="none", row.names=FALSE, class=FALSE), output=c(" x\\ny 1\n z 2"))
21942+
21943+
# setorderv() could take order as named column order mapping, #6932
21944+
DT = data.table(a=c(2,1,1,2), b=c("d","c","b","a"), c=c(1,2,1,2))
21945+
m = c(c=-1L, a=1L)
21946+
test(2385.01, setorderv(copy(DT), order=m), setorderv(copy(DT), cols=c("c", "a"), order=m))
21947+
DT=data.table(x=c(2,1,2), y=c(2,1,1))
21948+
test(2385.02, setorderv(DT, order=c(x=1L,y=-1L)), data.table(x=c(1,2,2), y=c(1,2,1)))
21949+
DT = data.table(x=1:3)
21950+
test(2385.03, setorderv(DT, order=c(y=1L)), error="some columns are not in the data.table")
21951+
test(2385.04, setorderv(DT, order=c(x=1L, x=-1L)), error="order argument has named duplicates")
21952+
test(2385.05, setorderv(DT, order=c(x=2L)), error="Must be +1 or -1")
21953+
DT = data.table(a=c(2,1,2), b=3:1)
21954+
test(2385.06, setorderv(copy(DT), order=c(a=1L)), setorderv(copy(DT), cols="a", order=1L))

man/setorder.Rd

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -42,11 +42,13 @@ is missing (ex: \code{setorder(x)}), \code{x} is rearranged based on all
4242
columns in ascending order by default. To sort by a column in descending order
4343
prefix the symbol \code{"-"} which means "descending" (\emph{not} "negative", in this context), i.e., \code{setorder(x, a, -b, c)}. The \code{-b} works
4444
when \code{b} is of type \code{character} as well. }
45-
\item{cols}{ A character vector of column names of \code{x} by which to order. By default, sorts over all columns; \code{cols = NULL} will return \code{x} untouched. Do not add \code{"-"} here. Use \code{order} argument instead. }
45+
\item{cols}{ A character vector of column names of \code{x} by which to order. By default, sorts over all columns; \code{cols = NULL} will return \code{x} untouched. Do not add \code{"-"} here. Use \code{order} argument instead. This argument can be omitted if \code{order} is a named vector. }
4646
\item{order}{ An integer vector with only possible values of \code{1} and
4747
\code{-1}, corresponding to ascending and descending order. The length of
4848
\code{order} must be either \code{1} or equal to that of \code{cols}. If
49-
\code{length(order) == 1}, it is recycled to \code{length(cols)}. }
49+
\code{length(order) == 1}, it is recycled to \code{length(cols)}. \code{order}
50+
can also be a named vector, in which case the names are used as \code{cols}
51+
and the \code{cols} argument can be omitted. }
5052
\item{na.last}{ \code{logical}. If \code{TRUE}, missing values in the data are placed last; if \code{FALSE}, they are placed first; if \code{NA} they are removed.
5153
\code{na.last=NA} is valid only for \code{x[order(., na.last)]} and related \code{sort_by(x, .)} (\R \ifelse{html}{\out{≥}}{\eqn{\ge}} 4.4.0) and its
5254
default is \code{TRUE}. \code{setorder} and \code{setorderv} only accept
@@ -65,7 +67,9 @@ Note that \code{-b} also works with columns of type \code{character} unlike
6567
\code{\link[base]{order}}, which requires \code{-xtfrm(y)} instead (which is slow).
6668

6769
\code{setorderv} in turn accepts a character vector of column names and an
68-
integer vector of column order separately.
70+
integer vector of column order separately. Additionally, \code{setorderv} can
71+
accept a named integer vector for \code{order}, in which case \code{cols} is
72+
inferred from the names and can be omitted.
6973

7074
Note that \code{\link{setkey}} still requires and will always sort only in
7175
ascending order, and is different from \code{setorder} in that it additionally
@@ -133,6 +137,10 @@ setorder(DT, A, -B)
133137

134138
# same as above, but using setorderv
135139
setorderv(DT, c("A", "B"), c(1, -1))
140+
141+
# infer cols from named order mapping
142+
mapping = c(A = 1L, B = -1L)
143+
setorderv(DT, order = mapping)
136144
}
137145
\keyword{ data }
138146

src/init.c

Lines changed: 117 additions & 117 deletions
Original file line numberDiff line numberDiff line change
@@ -50,125 +50,125 @@ size_t r_type_sizes[100];
5050
size_t r_type_order[100];
5151

5252
static const R_CallMethodDef callMethods[] = {
53-
{"Csetattrib", (DL_FUNC)&setattrib, -1},
54-
{"Cbmerge", (DL_FUNC)&bmerge, -1},
55-
{"Cassign", (DL_FUNC)&assign, -1},
56-
{"Cdogroups", (DL_FUNC)&dogroups, -1},
57-
{"Ccopy", (DL_FUNC)&copy, 2},
58-
{"Cshallowwrapper", (DL_FUNC)&shallowwrapper, -1},
59-
{"Csetdt_nrows", (DL_FUNC)&setdt_nrows, -1},
60-
{"Calloccolwrapper", (DL_FUNC)&alloccolwrapper, -1},
61-
{"Cselfrefokwrapper", (DL_FUNC)&selfrefokwrapper, -1},
62-
{"Ctruelength", (DL_FUNC)&truelength, -1},
63-
{"Csetcharvec", (DL_FUNC)&setcharvec, -1},
64-
{"Csetcolorder", (DL_FUNC)&setcolorder, -1},
65-
{"Cchmatch", (DL_FUNC)&chmatch_R, -1},
66-
{"Cchmatchdup", (DL_FUNC)&chmatchdup_R, -1},
67-
{"Cchin", (DL_FUNC)&chin_R, -1},
68-
{"CfreadR", (DL_FUNC)&freadR, -1},
69-
{"CspillConnectionToFile", (DL_FUNC) &spillConnectionToFile, -1},
70-
{"CfwriteR", (DL_FUNC)&fwriteR, -1},
71-
{"Creorder", (DL_FUNC)&reorder, -1},
72-
{"Crbindlist", (DL_FUNC)&rbindlist, -1},
73-
{"Cvecseq", (DL_FUNC)&vecseq, -1},
74-
{"Csetlistelt", (DL_FUNC)&setlistelt, -1},
75-
{"CsetS4elt", (DL_FUNC)&setS4elt, -1},
76-
{"Caddress", (DL_FUNC)&address, -1},
77-
{"CexpandAltRep", (DL_FUNC)&expandAltRep, -1},
78-
{"Cfmelt", (DL_FUNC)&fmelt, -1},
79-
{"Cfcast", (DL_FUNC)&fcast, -1},
80-
{"Cuniqlist", (DL_FUNC)&uniqlist, -1},
81-
{"Cuniqlengths", (DL_FUNC)&uniqlengths, -1},
82-
{"CforderReuseSorting", (DL_FUNC)&forderReuseSorting, -1},
83-
{"Cforder", (DL_FUNC)&forder, -1},
84-
{"Cissorted", (DL_FUNC)&issorted, -1},
85-
{"Cgforce", (DL_FUNC)&gforce, -1},
86-
{"Cgsum", (DL_FUNC)&gsum, -1},
87-
{"Cgmean", (DL_FUNC)&gmean, -1},
88-
{"Cgmin", (DL_FUNC)&gmin, -1},
89-
{"Cgmax", (DL_FUNC)&gmax, -1},
90-
{"CisOrderedSubset", (DL_FUNC)&isOrderedSubset, -1},
91-
{"CsetNumericRounding", (DL_FUNC)&setNumericRounding, -1},
92-
{"CgetNumericRounding", (DL_FUNC)&getNumericRounding, -1},
93-
{"Cbinary", (DL_FUNC)&binary, -1},
94-
{"CsubsetDT", (DL_FUNC)&subsetDT, -1},
95-
{"CsubsetVector", (DL_FUNC)&subsetVector, -1},
96-
{"CconvertNegAndZeroIdx", (DL_FUNC)&convertNegAndZeroIdx, -1},
97-
{"Cfrank", (DL_FUNC)&frank, -1},
98-
{"Cdt_na", (DL_FUNC)&dt_na, -1},
99-
{"Callocrowwrapper", (DL_FUNC)&allocrowwrapper, 2},
100-
{"CdeleteRows", (DL_FUNC)&deleteRows, 2},
101-
{"Clookup", (DL_FUNC)&lookup, -1},
102-
{"Coverlaps", (DL_FUNC)&overlaps, -1},
103-
{"Cwhichwrapper", (DL_FUNC)&whichwrapper, -1},
104-
{"Cshift", (DL_FUNC)&shift, -1},
105-
{"Ctranspose", (DL_FUNC)&transpose, -1},
106-
{"CanyNA", (DL_FUNC)&anyNA, -1},
107-
{"CfitsInInt32R", (DL_FUNC)&fitsInInt32R, -1},
108-
{"CfitsInInt64R", (DL_FUNC)&fitsInInt64R, -1},
109-
{"Csetlevels", (DL_FUNC)&setlevels, -1},
110-
{"Crleid", (DL_FUNC)&rleid, -1},
111-
{"Cgmedian", (DL_FUNC)&gmedian, -1},
112-
{"Cgtail", (DL_FUNC)&gtail, -1},
113-
{"Cghead", (DL_FUNC)&ghead, -1},
114-
{"Cglast", (DL_FUNC)&glast, -1},
115-
{"Cgfirst", (DL_FUNC)&gfirst, -1},
116-
{"Cgnthvalue", (DL_FUNC)&gnthvalue, -1},
117-
{"Cdim", (DL_FUNC)&dim, -1},
118-
{"Cgvar", (DL_FUNC)&gvar, -1},
119-
{"Cgsd", (DL_FUNC)&gsd, -1},
120-
{"Cgprod", (DL_FUNC)&gprod, -1},
121-
{"Cgshift", (DL_FUNC)&gshift, -1},
122-
{"Cnestedid", (DL_FUNC)&nestedid, -1},
123-
{"CsetDTthreads", (DL_FUNC)&setDTthreads, -1},
124-
{"CgetDTthreads", (DL_FUNC)&getDTthreads_R, -1},
125-
{"CgetDTthreadsC", (DL_FUNC)&getDTthreads_C, -1},
126-
{"CnqRecreateIndices", (DL_FUNC)&nqRecreateIndices, -1},
127-
{"Cfsort", (DL_FUNC)&fsort, -1},
128-
{"Cinrange", (DL_FUNC)&inrange, -1},
129-
{"Cbetween", (DL_FUNC)&between, -1},
130-
{"ChasOpenMP", (DL_FUNC)&hasOpenMP, -1},
131-
{"CuniqueNlogical", (DL_FUNC)&uniqueNlogical, -1},
132-
{"CfrollfunR", (DL_FUNC)&frollfunR, -1},
133-
{"CdllVersion", (DL_FUNC)&dllVersion, -1},
134-
{"CnafillR", (DL_FUNC)&nafillR, -1},
135-
{"CcolnamesInt", (DL_FUNC)&colnamesInt, -1},
136-
{"CinitLastUpdated", (DL_FUNC)&initLastUpdated, -1},
137-
{"Ccj", (DL_FUNC)&cj, -1},
138-
{"Ccoalesce", (DL_FUNC)&coalesce, -1},
139-
{"CfifelseR", (DL_FUNC)&fifelseR, -1},
140-
{"CfcaseR", (DL_FUNC)&fcaseR, -1},
141-
{"C_lock", (DL_FUNC)&lock, -1}, // _ for these 3 to avoid Clock as in time
142-
{"C_unlock", (DL_FUNC)&unlock, -1},
143-
{"C_islocked", (DL_FUNC)&islockedR, -1},
144-
{"CtestMsgR", (DL_FUNC)&testMsgR, -1},
145-
{"C_allNAR", (DL_FUNC)&allNAR, -1},
146-
{"CcoerceAs", (DL_FUNC)&coerceAs, -1},
147-
{"Ctest_dt_win_snprintf", (DL_FUNC)&test_dt_win_snprintf, -1},
148-
{"Cdt_zlib_version", (DL_FUNC)&dt_zlib_version, -1},
149-
{"Cdt_has_zlib", (DL_FUNC)&dt_has_zlib, -1},
150-
{"Csubstitute_call_arg_namesR", (DL_FUNC)&substitute_call_arg_namesR, -1},
151-
{"CstartsWithAny", (DL_FUNC)&startsWithAny, -1},
152-
{"CconvertDate", (DL_FUNC)&convertDate, -1},
153-
{"Cnotchin", (DL_FUNC)&notchin, -1},
154-
{"Ccbindlist", (DL_FUNC)&cbindlist, -1},
155-
{"CperhapsDataTableR", (DL_FUNC)&perhapsDataTableR, -1},
156-
{"CcopyCols", (DL_FUNC)&copyCols, -1},
157-
{"Cwarn_matrix_column_r", (DL_FUNC)&warn_matrix_column_r, -1},
158-
{"Cfrev", (DL_FUNC)&frev, -1},
159-
{"CmemcpyVector", (DL_FUNC)&memcpyVector, -1},
160-
{"CmemcpyDT", (DL_FUNC)&memcpyDT, -1},
161-
{"CmemcpyVectoradaptive", (DL_FUNC)&memcpyVectoradaptive, -1},
162-
{"CmemcpyDTadaptive", (DL_FUNC)&memcpyDTadaptive, -1},
163-
{"CcopyAsGrowable", (DL_FUNC)&copyAsGrowable, -1},
164-
{"CresizeVector", (DL_FUNC)&resizeVector, -1},
165-
{"Cfrolladapt", (DL_FUNC)&frolladapt, -1},
166-
{"Cis_direct_child", (DL_FUNC)&is_direct_child, -1},
167-
{NULL, NULL, 0}};
53+
{"Csetattrib", (DL_FUNC)&setattrib, -1},
54+
{"Cbmerge", (DL_FUNC)&bmerge, -1},
55+
{"Cassign", (DL_FUNC)&assign, -1},
56+
{"Cdogroups", (DL_FUNC)&dogroups, -1},
57+
{"Ccopy", (DL_FUNC)&copy, 2},
58+
{"Cshallowwrapper", (DL_FUNC)&shallowwrapper, -1},
59+
{"Csetdt_nrows", (DL_FUNC)&setdt_nrows, -1},
60+
{"Calloccolwrapper", (DL_FUNC)&alloccolwrapper, -1},
61+
{"Cselfrefokwrapper", (DL_FUNC)&selfrefokwrapper, -1},
62+
{"Ctruelength", (DL_FUNC)&truelength, -1},
63+
{"Csetcharvec", (DL_FUNC)&setcharvec, -1},
64+
{"Csetcolorder", (DL_FUNC)&setcolorder, -1},
65+
{"Cchmatch", (DL_FUNC)&chmatch_R, -1},
66+
{"Cchmatchdup", (DL_FUNC)&chmatchdup_R, -1},
67+
{"Cchin", (DL_FUNC)&chin_R, -1},
68+
{"CfreadR", (DL_FUNC)&freadR, -1},
69+
{"CspillConnectionToFile", (DL_FUNC)&spillConnectionToFile, -1},
70+
{"CfwriteR", (DL_FUNC)&fwriteR, -1},
71+
{"Creorder", (DL_FUNC)&reorder, -1},
72+
{"Crbindlist", (DL_FUNC)&rbindlist, -1},
73+
{"Cvecseq", (DL_FUNC)&vecseq, -1},
74+
{"Csetlistelt", (DL_FUNC)&setlistelt, -1},
75+
{"CsetS4elt", (DL_FUNC)&setS4elt, -1},
76+
{"Caddress", (DL_FUNC)&address, -1},
77+
{"CexpandAltRep", (DL_FUNC)&expandAltRep, -1},
78+
{"Cfmelt", (DL_FUNC)&fmelt, -1},
79+
{"Cfcast", (DL_FUNC)&fcast, -1},
80+
{"Cuniqlist", (DL_FUNC)&uniqlist, -1},
81+
{"Cuniqlengths", (DL_FUNC)&uniqlengths, -1},
82+
{"CforderReuseSorting", (DL_FUNC)&forderReuseSorting, -1},
83+
{"Cforder", (DL_FUNC)&forder, -1},
84+
{"Cissorted", (DL_FUNC)&issorted, -1},
85+
{"Cgforce", (DL_FUNC)&gforce, -1},
86+
{"Cgsum", (DL_FUNC)&gsum, -1},
87+
{"Cgmean", (DL_FUNC)&gmean, -1},
88+
{"Cgmin", (DL_FUNC)&gmin, -1},
89+
{"Cgmax", (DL_FUNC)&gmax, -1},
90+
{"CisOrderedSubset", (DL_FUNC)&isOrderedSubset, -1},
91+
{"CsetNumericRounding", (DL_FUNC)&setNumericRounding, -1},
92+
{"CgetNumericRounding", (DL_FUNC)&getNumericRounding, -1},
93+
{"Cbinary", (DL_FUNC)&binary, -1},
94+
{"CsubsetDT", (DL_FUNC)&subsetDT, -1},
95+
{"CsubsetVector", (DL_FUNC)&subsetVector, -1},
96+
{"CconvertNegAndZeroIdx", (DL_FUNC)&convertNegAndZeroIdx, -1},
97+
{"Cfrank", (DL_FUNC)&frank, -1},
98+
{"Cdt_na", (DL_FUNC)&dt_na, -1},
99+
{"Callocrowwrapper", (DL_FUNC)&allocrowwrapper, 2},
100+
{"CdeleteRows", (DL_FUNC)&deleteRows, 2},
101+
{"Clookup", (DL_FUNC)&lookup, -1},
102+
{"Coverlaps", (DL_FUNC)&overlaps, -1},
103+
{"Cwhichwrapper", (DL_FUNC)&whichwrapper, -1},
104+
{"Cshift", (DL_FUNC)&shift, -1},
105+
{"Ctranspose", (DL_FUNC)&transpose, -1},
106+
{"CanyNA", (DL_FUNC)&anyNA, -1},
107+
{"CfitsInInt32R", (DL_FUNC)&fitsInInt32R, -1},
108+
{"CfitsInInt64R", (DL_FUNC)&fitsInInt64R, -1},
109+
{"Csetlevels", (DL_FUNC)&setlevels, -1},
110+
{"Crleid", (DL_FUNC)&rleid, -1},
111+
{"Cgmedian", (DL_FUNC)&gmedian, -1},
112+
{"Cgtail", (DL_FUNC)&gtail, -1},
113+
{"Cghead", (DL_FUNC)&ghead, -1},
114+
{"Cglast", (DL_FUNC)&glast, -1},
115+
{"Cgfirst", (DL_FUNC)&gfirst, -1},
116+
{"Cgnthvalue", (DL_FUNC)&gnthvalue, -1},
117+
{"Cdim", (DL_FUNC)&dim, -1},
118+
{"Cgvar", (DL_FUNC)&gvar, -1},
119+
{"Cgsd", (DL_FUNC)&gsd, -1},
120+
{"Cgprod", (DL_FUNC)&gprod, -1},
121+
{"Cgshift", (DL_FUNC)&gshift, -1},
122+
{"Cnestedid", (DL_FUNC)&nestedid, -1},
123+
{"CsetDTthreads", (DL_FUNC)&setDTthreads, -1},
124+
{"CgetDTthreads", (DL_FUNC)&getDTthreads_R, -1},
125+
{"CgetDTthreadsC", (DL_FUNC)&getDTthreads_C, -1},
126+
{"CnqRecreateIndices", (DL_FUNC)&nqRecreateIndices, -1},
127+
{"Cfsort", (DL_FUNC)&fsort, -1},
128+
{"Cinrange", (DL_FUNC)&inrange, -1},
129+
{"Cbetween", (DL_FUNC)&between, -1},
130+
{"ChasOpenMP", (DL_FUNC)&hasOpenMP, -1},
131+
{"CuniqueNlogical", (DL_FUNC)&uniqueNlogical, -1},
132+
{"CfrollfunR", (DL_FUNC)&frollfunR, -1},
133+
{"CdllVersion", (DL_FUNC)&dllVersion, -1},
134+
{"CnafillR", (DL_FUNC)&nafillR, -1},
135+
{"CcolnamesInt", (DL_FUNC)&colnamesInt, -1},
136+
{"CinitLastUpdated", (DL_FUNC)&initLastUpdated, -1},
137+
{"Ccj", (DL_FUNC)&cj, -1},
138+
{"Ccoalesce", (DL_FUNC)&coalesce, -1},
139+
{"CfifelseR", (DL_FUNC)&fifelseR, -1},
140+
{"CfcaseR", (DL_FUNC)&fcaseR, -1},
141+
{"C_lock", (DL_FUNC)&lock, -1}, // _ for these 3 to avoid Clock as in time
142+
{"C_unlock", (DL_FUNC)&unlock, -1},
143+
{"C_islocked", (DL_FUNC)&islockedR, -1},
144+
{"CtestMsgR", (DL_FUNC)&testMsgR, -1},
145+
{"C_allNAR", (DL_FUNC)&allNAR, -1},
146+
{"CcoerceAs", (DL_FUNC)&coerceAs, -1},
147+
{"Ctest_dt_win_snprintf", (DL_FUNC)&test_dt_win_snprintf, -1},
148+
{"Cdt_zlib_version", (DL_FUNC)&dt_zlib_version, -1},
149+
{"Cdt_has_zlib", (DL_FUNC)&dt_has_zlib, -1},
150+
{"Csubstitute_call_arg_namesR", (DL_FUNC)&substitute_call_arg_namesR, -1},
151+
{"CstartsWithAny", (DL_FUNC)&startsWithAny, -1},
152+
{"CconvertDate", (DL_FUNC)&convertDate, -1},
153+
{"Cnotchin", (DL_FUNC)&notchin, -1},
154+
{"Ccbindlist", (DL_FUNC)&cbindlist, -1},
155+
{"CperhapsDataTableR", (DL_FUNC)&perhapsDataTableR, -1},
156+
{"CcopyCols", (DL_FUNC)&copyCols, -1},
157+
{"Cwarn_matrix_column_r", (DL_FUNC)&warn_matrix_column_r, -1},
158+
{"Cfrev", (DL_FUNC)&frev, -1},
159+
{"CmemcpyVector", (DL_FUNC)&memcpyVector, -1},
160+
{"CmemcpyDT", (DL_FUNC)&memcpyDT, -1},
161+
{"CmemcpyVectoradaptive", (DL_FUNC)&memcpyVectoradaptive, -1},
162+
{"CmemcpyDTadaptive", (DL_FUNC)&memcpyDTadaptive, -1},
163+
{"CcopyAsGrowable", (DL_FUNC)&copyAsGrowable, -1},
164+
{"CresizeVector", (DL_FUNC)&resizeVector, -1},
165+
{"Cfrolladapt", (DL_FUNC)&frolladapt, -1},
166+
{"Cis_direct_child", (DL_FUNC)&is_direct_child, -1},
167+
{NULL, NULL, 0}};
168168

169169
static const R_ExternalMethodDef externalMethods[] = {
170-
{"Cfastmean", (DL_FUNC)&fastmean, -1},
171-
{NULL, NULL, 0}};
170+
{"Cfastmean", (DL_FUNC)&fastmean, -1},
171+
{NULL, NULL, 0}};
172172

173173
static void setSizes(void)
174174
{

0 commit comments

Comments
 (0)