From 29f93060d4d5446d7128aaae0d78443ef6e0f0de Mon Sep 17 00:00:00 2001 From: Michael Chirico Date: Thu, 12 Mar 2020 01:34:38 +0800 Subject: [PATCH 01/12] identifying / unifying similar messages for streamlined translation --- src/assign.c | 6 +++--- src/bmerge.c | 2 +- src/cj.c | 2 +- src/coalesce.c | 2 +- src/fifelse.c | 4 ++-- src/fmelt.c | 2 +- src/frank.c | 8 ++++---- src/fsort.c | 2 +- src/gsumm.c | 22 +++++++++++----------- src/openmp-utils.c | 2 +- src/shift.c | 2 +- src/subset.c | 8 ++++---- src/uniqlist.c | 14 +++++++------- src/utils.c | 8 ++++---- 14 files changed, 42 insertions(+), 42 deletions(-) diff --git a/src/assign.c b/src/assign.c index 1392079e72..dc63dc4e2e 100644 --- a/src/assign.c +++ b/src/assign.c @@ -121,9 +121,9 @@ static int _selfrefok(SEXP x, Rboolean checkNames, Rboolean verbose) { if (verbose) Rprintf(_(".internal.selfref ptr is NULL. This is expected and normal for a data.table loaded from disk. Please remember to always setDT() immediately after loading to prevent unexpected behavior. If this table was not loaded from disk or you've already run setDT(), please report to data.table issue tracker.\n")); return -1; } - if (!isNull(p)) error(_("Internal error: .internal.selfref ptr is not NULL or R_NilValue")); // # nocov + if (!isNull(p)) error(_("Internal error: .internal.selfref ptr is neither NULL nor R_NilValue")); // # nocov tag = R_ExternalPtrTag(v); - if (!(isNull(tag) || isString(tag))) error(_("Internal error: .internal.selfref tag isn't NULL or a character vector")); // # nocov + if (!(isNull(tag) || isString(tag))) error(_("Internal error: .internal.selfref tag is neither NULL nor a character vector")); // # nocov names = getAttrib(x, R_NamesSymbol); if (names != tag && isString(names)) SET_TRUELENGTH(names, LENGTH(names)); @@ -326,7 +326,7 @@ SEXP assign(SEXP dt, SEXP rows, SEXP cols, SEXP newcolnames, SEXP values) const int *rowsd = INTEGER(rows); for (i=0; inrow) - error(_("i[%d] is %d which is out of range [1,nrow=%d]."),i+1,rowsd[i],nrow); // set() reaches here (test 2005.2); := reaches the same error in subset.c first + error(_("i[%d] is %d which is out of range [1,nrow=%d]"), i+1, rowsd[i], nrow); // set() reaches here (test 2005.2); := reaches the same error in subset.c first if (rowsd[i]>=1) numToDo++; } if (verbose) Rprintf(_("Assigning to %d row subset of %d rows\n"), numToDo, nrow); diff --git a/src/bmerge.c b/src/bmerge.c index 15d7d6f4f7..a5e8b994a6 100644 --- a/src/bmerge.c +++ b/src/bmerge.c @@ -407,7 +407,7 @@ void bmerge_r(int xlowIn, int xuppIn, int ilowIn, int iuppIn, int col, int thisg } break; default: - error(_("Type '%s' not supported for joining/merging"), type2char(TYPEOF(xc))); + error(_("Type '%s' is not supported for joining/merging"), type2char(TYPEOF(xc))); } if (xlowleach = (int *)R_alloc(data->lvalues, sizeof(int)); data->isidentical = (int *)R_alloc(data->lvalues, sizeof(int)); data->isfactor = (int *)R_alloc(data->lvalues, sizeof(int)); diff --git a/src/frank.c b/src/frank.c index 565154c70d..50fc2573af 100644 --- a/src/frank.c +++ b/src/frank.c @@ -6,8 +6,8 @@ SEXP dt_na(SEXP x, SEXP cols) { int n=0, elem; - if (!isNewList(x)) error(_("Internal error. Argument 'x' to Cdt_na is type '%s' not 'list'"), type2char(TYPEOF(x))); // # nocov - if (!isInteger(cols)) error(_("Internal error. Argument 'cols' to Cdt_na is type '%s' not 'integer'"), type2char(TYPEOF(cols))); // # nocov + if (!isNewList(x)) error(_("Internal error. Argument '%s' to %s is type '%s' not '%s'"), "x", "Cdt_na", type2char(TYPEOF(x)), "list"); // # nocov + if (!isInteger(cols)) error(_("Internal error. Argument '%s' to %s is type '%s' not '%s'"), "cols", "Cdt_na", type2char(TYPEOF(cols)), "integer"); // # nocov for (int i=0; iLENGTH(x)) @@ -147,8 +147,8 @@ SEXP frank(SEXP xorderArg, SEXP xstartArg, SEXP xlenArg, SEXP ties_method) { SEXP anyNA(SEXP x, SEXP cols) { int i, j, n=0, elem; - if (!isNewList(x)) error(_("Internal error. Argument 'x' to CanyNA is type '%s' not 'list'"), type2char(TYPEOF(x))); // #nocov - if (!isInteger(cols)) error(_("Internal error. Argument 'cols' to CanyNA is type '%s' not 'integer'"), type2char(TYPEOF(cols))); // # nocov + if (!isNewList(x)) error(_("Internal error. Argument '%s' to %s is type '%s' not '%s'"), "x", "CanyNA", type2char(TYPEOF(x)), "list"); // #nocov + if (!isInteger(cols)) error(_("Internal error. Argument '%s' to %s is type '%s' not '%s'"), "cols", "CanyNA", type2char(TYPEOF(cols)), "integer"); // # nocov for (i=0; iLENGTH(x)) diff --git a/src/fsort.c b/src/fsort.c index d3c695eac3..429636ff68 100644 --- a/src/fsort.c +++ b/src/fsort.c @@ -108,7 +108,7 @@ SEXP fsort(SEXP x, SEXP verboseArg) { if (!isLogical(verboseArg) || LENGTH(verboseArg)!=1 || LOGICAL(verboseArg)[0]==NA_LOGICAL) error(_("verbose must be TRUE or FALSE")); Rboolean verbose = LOGICAL(verboseArg)[0]; - if (!isNumeric(x)) error(_("x must be a vector of type 'double' currently")); + if (!isNumeric(x)) error(_("x must be a vector of type double currently")); // TODO: not only detect if already sorted, but if it is, just return x to save the duplicate SEXP ansVec = PROTECT(allocVector(REALSXP, xlength(x))); diff --git a/src/gsumm.c b/src/gsumm.c index ef63519a3c..cc2252f6a0 100644 --- a/src/gsumm.c +++ b/src/gsumm.c @@ -562,7 +562,7 @@ SEXP gsum(SEXP x, SEXP narmArg, SEXP warnOverflowArg) } } break; default: - error(_("Type '%s' not supported by GForce sum (gsum). Either add the prefix base::sum(.) or turn off GForce optimization using options(datatable.optimize=1)"), type2char(TYPEOF(x))); + error(_("Type '%s' is not supported by GForce %s. Either add the prefix %s or turn off GForce optimization using options(datatable.optimize=1)"), type2char(TYPEOF(x)), "sum (gsum)", "base::sum(.)"); } copyMostAttrib(x, ans); if (verbose) { Rprintf(_("%.3fs\n"), wallclock()-started); } @@ -647,7 +647,7 @@ SEXP gmean(SEXP x, SEXP narm) } break; default: free(s); free(c); // # nocov because it already stops at gsum, remove nocov if gmean will support a type that gsum wont - error(_("Type '%s' not supported by GForce mean (gmean) na.rm=TRUE. Either add the prefix base::mean(.) or turn off GForce optimization using options(datatable.optimize=1)"), type2char(TYPEOF(x))); // # nocov + error(_("Type '%s' is not supported by GForce %s. Either add the prefix %s or turn off GForce optimization using options(datatable.optimize=1)"), type2char(TYPEOF(x)), "mean (gmean)", "base::mean(.)") // # nocov } switch(TYPEOF(x)) { case LGLSXP: case INTSXP: case REALSXP: { @@ -791,7 +791,7 @@ SEXP gmin(SEXP x, SEXP narm) error(_("Type 'complex' has no well-defined min")); break; default: - error(_("Type '%s' not supported by GForce min (gmin). Either add the prefix base::min(.) or turn off GForce optimization using options(datatable.optimize=1)"), type2char(TYPEOF(x))); + error(_("Type '%s' is not supported by GForce %s. Either add the prefix %s or turn off GForce optimization using options(datatable.optimize=1)"), type2char(TYPEOF(x)), "min (gmin)", "base::min(.)") } copyMostAttrib(x, ans); // all but names,dim and dimnames. And if so, we want a copy here, not keepattr's SET_ATTRIB. UNPROTECT(protecti); // ans + maybe 1 coerced ans @@ -937,7 +937,7 @@ SEXP gmax(SEXP x, SEXP narm) error(_("Type 'complex' has no well-defined max")); break; default: - error(_("Type '%s' not supported by GForce max (gmax). Either add the prefix base::max(.) or turn off GForce optimization using options(datatable.optimize=1)"), type2char(TYPEOF(x))); + error(_("Type '%s' is not supported by GForce %s. Either add the prefix %s or turn off GForce optimization using options(datatable.optimize=1)"), type2char(TYPEOF(x)), "max (gmax)", "base::max(.)") } copyMostAttrib(x, ans); // all but names,dim and dimnames. And if so, we want a copy here, not keepattr's SET_ATTRIB. UNPROTECT(protecti); @@ -989,7 +989,7 @@ SEXP gmedian(SEXP x, SEXP narmArg) { }} break; default: - error(_("Type '%s' not supported by GForce median (gmedian). Either add the prefix stats::median(.) or turn off GForce optimization using options(datatable.optimize=1)"), type2char(TYPEOF(x))); + error(_("Type '%s' is not supported by GForce %s. Either add the prefix %s or turn off GForce optimization using options(datatable.optimize=1)"), type2char(TYPEOF(x)), "median (gmedian)", "stats::median(.)") } if (!isInt64) copyMostAttrib(x, ans); // else the integer64 class needs to be dropped since double is always returned by gmedian @@ -1070,7 +1070,7 @@ SEXP glast(SEXP x) { } break; default: - error(_("Type '%s' not supported by GForce tail (gtail). Either add the prefix utils::tail(.) or turn off GForce optimization using options(datatable.optimize=1)"), type2char(TYPEOF(x))); + error(_("Type '%s' is not supported by GForce %s. Either add the prefix %s or turn off GForce optimization using options(datatable.optimize=1)"), type2char(TYPEOF(x)), "tail (gtail)", "utils::tail(.)") } copyMostAttrib(x, ans); UNPROTECT(1); @@ -1150,7 +1150,7 @@ SEXP gfirst(SEXP x) { } break; default: - error(_("Type '%s' not supported by GForce head (ghead). Either add the prefix utils::head(.) or turn off GForce optimization using options(datatable.optimize=1)"), type2char(TYPEOF(x))); + error(_("Type '%s' is not supported by GForce %s. Either add the prefix %s or turn off GForce optimization using options(datatable.optimize=1)"), type2char(TYPEOF(x)), "head (ghead)", "utils::head(.)") } copyMostAttrib(x, ans); UNPROTECT(1); @@ -1247,7 +1247,7 @@ SEXP gnthvalue(SEXP x, SEXP valArg) { } break; default: - error(_("Type '%s' not supported by GForce subset `[` (gnthvalue). Either add the prefix utils::head(.) or turn off GForce optimization using options(datatable.optimize=1)"), type2char(TYPEOF(x))); + error(_("Type '%s' is not supported by GForce %s. Either add the prefix %s or turn off GForce optimization using options(datatable.optimize=1)"), type2char(TYPEOF(x)), "subset `[` (gnthvalue)", "utils::head(.)") } copyMostAttrib(x, ans); UNPROTECT(1); @@ -1379,9 +1379,9 @@ SEXP gvarsd1(SEXP x, SEXP narm, Rboolean isSD) break; default: if (!isSD) { - error(_("Type '%s' not supported by GForce var (gvar). Either add the prefix stats::var(.) or turn off GForce optimization using options(datatable.optimize=1)"), type2char(TYPEOF(x))); + error(_("Type '%s' is not supported by GForce %s. Either add the prefix %s or turn off GForce optimization using options(datatable.optimize=1)"), type2char(TYPEOF(x)), "var (gvar)", "stats::var(.)") } else { - error(_("Type '%s' not supported by GForce sd (gsd). Either add the prefix stats::sd(.) or turn off GForce optimization using options(datatable.optimize=1)"), type2char(TYPEOF(x))); + error(_("Type '%s' is not supported by GForce %s. Either add the prefix %s or turn off GForce optimization using options(datatable.optimize=1)"), type2char(TYPEOF(x)), "sd (gsd)", "stats::sd(.)") } } // no copyMostAttrib(x, ans) since class (e.g. Date) unlikely applicable to sd/var @@ -1443,7 +1443,7 @@ SEXP gprod(SEXP x, SEXP narm) break; default: free(s); - error(_("Type '%s' not supported by GForce prod (gprod). Either add the prefix base::prod(.) or turn off GForce optimization using options(datatable.optimize=1)"), type2char(TYPEOF(x))); + error(_("Type '%s' is not supported by GForce %s. Either add the prefix %s or turn off GForce optimization using options(datatable.optimize=1)"), type2char(TYPEOF(x)), "prod (gprod)", "base::prod(.)") } free(s); copyMostAttrib(x, ans); diff --git a/src/openmp-utils.c b/src/openmp-utils.c index b901601843..3c019cb0e6 100644 --- a/src/openmp-utils.c +++ b/src/openmp-utils.c @@ -64,7 +64,7 @@ static const char *mygetenv(const char *name, const char *unset) { } SEXP getDTthreads_R(SEXP verbose) { - if (!isLogical(verbose) || LENGTH(verbose)!=1 || INTEGER(verbose)[0]==NA_LOGICAL) error(_("'verbose' must be TRUE or FALSE")); + if (!isLogical(verbose) || LENGTH(verbose)!=1 || INTEGER(verbose)[0]==NA_LOGICAL) error(_("verbose must be TRUE or FALSE")); if (LOGICAL(verbose)[0]) { #ifndef _OPENMP Rprintf(_("This installation of data.table has not been compiled with OpenMP support.\n")); diff --git a/src/shift.c b/src/shift.c index 643283d7c0..719ee98d65 100644 --- a/src/shift.c +++ b/src/shift.c @@ -154,7 +154,7 @@ SEXP shift(SEXP obj, SEXP k, SEXP fill, SEXP type) { break; default : - error(_("Unsupported type '%s'"), type2char(TYPEOF(elem))); + error(_("Type '%s' is not supported"), type2char(TYPEOF(elem))); } } diff --git a/src/subset.c b/src/subset.c index d9fea2800c..fdf22c3805 100644 --- a/src/subset.c +++ b/src/subset.c @@ -89,7 +89,7 @@ static const char *check_idx(SEXP idx, int max, bool *anyNA_out, bool *orderedSu // error if any negatives, zeros or >max since they should have been dealt with by convertNegAndZeroIdx() called ealier at R level. // single cache efficient sweep with prefetch, so very low priority to go parallel { - if (!isInteger(idx)) error(_("Internal error. 'idx' is type '%s' not 'integer'"), type2char(TYPEOF(idx))); // # nocov + if (!isInteger(idx)) error(_("Internal error. Argument '%s' to %s is type '%s' not '%s'"), "idx", "check_idx", type2char(TYPEOF(idx)), "integer"); // # nocov bool anyLess=false, anyNA=false; int last = INT32_MIN; int *idxp = INTEGER(idx), n=LENGTH(idx); @@ -239,7 +239,7 @@ static void checkCol(SEXP col, int colNum, int nrow, SEXP x) SEXP subsetDT(SEXP x, SEXP rows, SEXP cols) { // API change needs update NEWS.md and man/cdt.Rd int nprotect=0; - if (!isNewList(x)) error(_("Internal error. Argument 'x' to CsubsetDT is type '%s' not 'list'"), type2char(TYPEOF(rows))); // # nocov + if (!isNewList(x)) error(_("Internal error. Argument '%s' to %s is type '%s' not '%s'"), "x", "CsubsetDT", type2char(TYPEOF(rows)), "list"); // # nocov if (!length(x)) return(x); // return empty list const int nrow = length(VECTOR_ELT(x,0)); @@ -252,10 +252,10 @@ SEXP subsetDT(SEXP x, SEXP rows, SEXP cols) { // API change needs update NEWS.md if (err!=NULL) error(err); } - if (!isInteger(cols)) error(_("Internal error. Argument 'cols' to Csubset is type '%s' not 'integer'"), type2char(TYPEOF(cols))); // # nocov + if (!isInteger(cols)) error(_("Internal error. Argument '%s' to %s is type '%s' not '%s'"), "cols", "Csubset", type2char(TYPEOF(cols)), "integer"); // # nocov for (int i=0; iLENGTH(x)) error(_("Item %d of 'cols' is %d which is outside 1-based range [1,ncol(x)=%d]"), i+1, this, LENGTH(x)); + if (this<1 || this>LENGTH(x)) error(_("Item %d of cols is %d which is outside the range [1,ncol(x)=%d]"), i+1, this, LENGTH(x)); } int overAlloc = checkOverAlloc(GetOption(install("datatable.alloccol"), R_NilValue)); diff --git a/src/uniqlist.c b/src/uniqlist.c index 447b3ea057..50258111dd 100644 --- a/src/uniqlist.c +++ b/src/uniqlist.c @@ -93,7 +93,7 @@ SEXP uniqlist(SEXP l, SEXP order) } } break; default : - error(_("Type '%s' not supported"), type2char(TYPEOF(v))); // # nocov + error(_("Type '%s' is not supported"), type2char(TYPEOF(v))); // # nocov } } else { // ncol>1 @@ -124,7 +124,7 @@ SEXP uniqlist(SEXP l, SEXP order) } break; default : - error(_("Type '%s' not supported"), type2char(TYPEOF(v))); // # nocov + error(_("Type '%s' is not supported"), type2char(TYPEOF(v))); // # nocov } } if (!b) { @@ -168,7 +168,7 @@ SEXP rleid(SEXP l, SEXP cols) { int *icols = INTEGER(cols); for (int i=0; incol) error(_("Item %d of cols is %d which is outside range of l [1,length(l)=%d]"), i+1, elem, ncol); + if (elem<1 || elem>ncol) error(_("Item %d of cols is %d which is outside the range [1,length(l)=%d]"), i+1, elem, ncol); } for (int i=1; i0 but ngrps==0"), nrows); // # nocov R_len_t resetctr=0, rlen = length(resetvals) ? INTEGER(resetvals)[0] : 0; - if (!isInteger(cols) || ncols == 0) error(_("cols must be an integer vector of positive length")); + if (!isInteger(cols) || ncols == 0) error(_("cols must be an integer vector with length >= 1")); // mult arg enum {ALL, FIRST, LAST} mult = ALL; if (!strcmp(CHAR(STRING_ELT(multArg, 0)), "all")) mult = ALL; @@ -315,7 +315,7 @@ SEXP nestedid(SEXP l, SEXP cols, SEXP order, SEXP grps, SEXP resetvals, SEXP mul dtwiddle(xd, thisi) >= dtwiddle(xd, previ); } break; default: - error(_("Type '%s' not supported"), type2char(TYPEOF(v))); // # nocov + error(_("Type '%s' is not supported"), type2char(TYPEOF(v))); // # nocov } } if (b) break; diff --git a/src/utils.c b/src/utils.c index 87348beb7c..9efd959cd3 100644 --- a/src/utils.c +++ b/src/utils.c @@ -64,7 +64,7 @@ bool allNA(SEXP x, bool errorForBadType) { return true; case CPLXSXP: { const Rcomplex *xd = COMPLEX(x); - for (int i=0; inx) || (icols[i]<1)) - error(_("argument specifying columns specify non existing column(s): cols[%d]=%d"), i+1, icols[i]); // handles NAs also + error(_("argument specifying received non-existing column(s): cols[%d]=%d"), i+1, icols[i]); // handles NAs also } } else if (isString(cols)) { SEXP xnames = PROTECT(getAttrib(x, R_NamesSymbol)); protecti++; @@ -130,13 +130,13 @@ SEXP colnamesInt(SEXP x, SEXP cols, SEXP check_dups) { int *icols = INTEGER(ricols); for (int i=0; i Date: Thu, 12 Mar 2020 10:57:53 +0800 Subject: [PATCH 02/12] a few more msg, and update the pot&translations --- inst/po/en@quot/LC_MESSAGES/R-data.table.mo | Bin 89020 -> 90128 bytes inst/po/en@quot/LC_MESSAGES/data.table.mo | Bin 139310 -> 135030 bytes inst/po/zh_CN/LC_MESSAGES/R-data.table.mo | Bin 87135 -> 87076 bytes inst/po/zh_CN/LC_MESSAGES/data.table.mo | Bin 138485 -> 133656 bytes po/R-data.table.pot | 22 +- po/R-zh_CN.po | 39 +- po/data.table.pot | 819 ++++++++---------- po/zh_CN.po | 888 +++++++++----------- src/gsumm.c | 2 +- src/utils.c | 6 +- 10 files changed, 791 insertions(+), 985 deletions(-) diff --git a/inst/po/en@quot/LC_MESSAGES/R-data.table.mo b/inst/po/en@quot/LC_MESSAGES/R-data.table.mo index 76d9bd3c920062171cb0e44495a9f7c5313a05bc..a57e6f026c457bc033b5b48dcc8306ba23e99c3b 100644 GIT binary patch delta 13896 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 delta 12805 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 diff --git a/inst/po/en@quot/LC_MESSAGES/data.table.mo b/inst/po/en@quot/LC_MESSAGES/data.table.mo index f88de8edf3658ac0de0066f31f1d52e78ebd041d..62f5996b8d53d2b1430bc76e4a6be514868f93fb 100644 GIT binary patch delta 20304 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 delta 21855 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 E0kQ%4w*UYD diff --git a/inst/po/zh_CN/LC_MESSAGES/R-data.table.mo b/inst/po/zh_CN/LC_MESSAGES/R-data.table.mo index d2d420514231d061be093f3d18c58a116e150979..b439d1e00e1ca6d58a0e69002d0ad10a92d7021e 100644 GIT binary patch delta 11773 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

?AT< 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 RV{?rci3!{1G&Mf-{6A&V$u$4~ diff --git a/inst/po/zh_CN/LC_MESSAGES/data.table.mo b/inst/po/zh_CN/LC_MESSAGES/data.table.mo index c5d63fb7d333e36e882685abafccd4c609d72aa0..1f724f0850db3e6d1b89ee4e85639b51ef419541 100644 GIT binary patch delta 19463 zcmb8%cX(CBzQ*yjlF)l6A;1oh(0i{5J@k$!NKJsy389Iw=^%oD8wgD)Dk6e_0YXul zGyxG61q2HSNK*l60-F1M_sl+*bIx=Bxa+x-&&+RTwOKQ>R)Xg~*p+eVqKw`jbB8Q; z9mlyH^2!3~`)06�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 O*Jo`@JzFTKi2FYy^A!~U delta 22521 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 diff --git a/po/R-data.table.pot b/po/R-data.table.pot index 9e93031c9d..64719e1df6 100644 --- a/po/R-data.table.pot +++ b/po/R-data.table.pot @@ -1,7 +1,7 @@ msgid "" msgstr "" "Project-Id-Version: data.table 1.12.9\n" -"POT-Creation-Date: 2019-12-31 13:02\n" +"POT-Creation-Date: 2020-03-12 10:33\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -304,6 +304,9 @@ msgstr "" msgid "not-join '!' prefix is present on i but nomatch is provided. Please remove nomatch." msgstr "" +msgid "Operator := detected in i, the first argument inside DT[...], but is only valid in the second argument, j. Most often, this happens when forgetting the first comma (e.g. DT[newvar := 5] instead of DT[ , new_var := 5]). Please double-check the syntax. Run traceback(), and debugger() to get a line number." +msgstr "" + msgid "is not found in calling scope" msgstr "" @@ -445,6 +448,12 @@ msgstr "" msgid "Some items of .SDcols are not column names:" msgstr "" +msgid "'(m)get' found in j. ansvars being set to all columns. Use .SDcols or a single j=eval(macro) instead. Both will detect the columns used which is important for efficiency.\nOld ansvars: %s" +msgstr "" + +msgid "New ansvars: %s" +msgstr "" + msgid "This j doesn't use .SD but .SDcols has been supplied. Ignoring .SDcols. See ?data.table." msgstr "" @@ -1609,9 +1618,6 @@ msgstr "" msgid "None of the datasets should contain a column named '.seqn'" msgstr "" -msgid "'target' and 'current' must both be data.tables" -msgstr "" - msgid "Internal error: ncol(current)==ncol(target) was checked above" msgstr "" @@ -1732,7 +1738,13 @@ msgstr "" msgid "not found: [" msgstr "" -msgid "Input xts object should not have 'index' column because it would result in duplicate column names. Rename 'index' column in xts or use `keep.rownames=FALSE` and add index manually as another column." +msgid "keep.rownames must be length 1" +msgstr "" + +msgid "keep.rownames must not be NA" +msgstr "" + +msgid "Input xts object should not have '%s' column because it would result in duplicate column names. Rename '%s' column in xts or use `keep.rownames` to change the index col name." msgstr "" msgid "data.table must have a time based column in first position, use `setcolorder` function to change the order, or see ?timeBased for supported types" diff --git a/po/R-zh_CN.po b/po/R-zh_CN.po index 9411e50fd2..c805e4c57d 100644 --- a/po/R-zh_CN.po +++ b/po/R-zh_CN.po @@ -1,7 +1,7 @@ msgid "" msgstr "" "Project-Id-Version: data.table 1.12.5\n" -"POT-Creation-Date: 2019-12-31 13:02\n" +"POT-Creation-Date: 2020-03-12 10:33\n" "PO-Revision-Date: 2019-11-16 18:37+0800\n" "Last-Translator: Xianying Tan \n" "Language-Team: Mandarin\n" @@ -387,6 +387,14 @@ msgid "" msgstr "" "not-join '!' 前缀在 i 中存在,但是 nomatch 也被提供了。需要移除nomatch。" +msgid "" +"Operator := detected in i, the first argument inside DT[...], but is only " +"valid in the second argument, j. Most often, this happens when forgetting " +"the first comma (e.g. DT[newvar := 5] instead of DT[ , new_var := 5]). " +"Please double-check the syntax. Run traceback(), and debugger() to get a " +"line number." +msgstr "" + msgid "is not found in calling scope" msgstr "不存在调用环境里" @@ -594,6 +602,16 @@ msgstr ".SDcols 应为列数或是列名" msgid "Some items of .SDcols are not column names:" msgstr ".SDcols 中的部份项目不是列名:" +msgid "" +"'(m)get' found in j. ansvars being set to all columns. Use .SDcols or a " +"single j=eval(macro) instead. Both will detect the columns used which is " +"important for efficiency.\n" +"Old ansvars: %s" +msgstr "" + +msgid "New ansvars: %s" +msgstr "" + msgid "" "This j doesn't use .SD but .SDcols has been supplied. Ignoring .SDcols. See ?" "data.table." @@ -2216,9 +2234,6 @@ msgstr "' 然而 y 中对应的项是:'" msgid "None of the datasets should contain a column named '.seqn'" msgstr "所有的数据集都不应该包含名为 '.seqn' 的列" -msgid "'target' and 'current' must both be data.tables" -msgstr "'target' 和 'current' 都必须是 data.table" - msgid "Internal error: ncol(current)==ncol(target) was checked above" msgstr "内部错误:ncol(current)==ncol(target) 之前已经检查" @@ -2363,13 +2378,19 @@ msgstr "Pattern" msgid "not found: [" msgstr "未找到: [" +msgid "keep.rownames must be length 1" +msgstr "keep.rownames 的长度必须为 1" + +msgid "keep.rownames must not be NA" +msgstr "" + msgid "" -"Input xts object should not have 'index' column because it would result in " -"duplicate column names. Rename 'index' column in xts or use `keep." -"rownames=FALSE` and add index manually as another column." +"Input xts object should not have '%s' column because it would result in " +"duplicate column names. Rename '%s' column in xts or use `keep.rownames` to " +"change the index col name." msgstr "" -"输入的xts对象不能含有'index'列,因这会导致出现重复的列名。请尝试重新命名xts中" -"的'index'列或者使用`keep.rownames=FALSE`并手动添加index为另外的列" +"输入的xts对象不能含有'%s'列,因这会导致出现重复的列名。请尝试重新命名xts中" +"的'%s'列或者使用`keep.rownames=FALSE`并手动添加index为另外的列" msgid "" "data.table must have a time based column in first position, use " diff --git a/po/data.table.pot b/po/data.table.pot index a826bab881..6b1bc33627 100644 --- a/po/data.table.pot +++ b/po/data.table.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: data.table 1.12.9\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2019-12-30 01:24+0800\n" +"POT-Creation-Date: 2020-03-12 10:56+0800\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -40,11 +40,12 @@ msgid "" msgstr "" #: assign.c:124 -msgid "Internal error: .internal.selfref ptr is not NULL or R_NilValue" +msgid "Internal error: .internal.selfref ptr is neither NULL nor R_NilValue" msgstr "" #: assign.c:126 -msgid "Internal error: .internal.selfref tag isn't NULL or a character vector" +msgid "" +"Internal error: .internal.selfref tag is neither NULL nor a character vector" msgstr "" #: assign.c:168 @@ -122,7 +123,7 @@ msgstr "" msgid "getOption('datatable.alloc')==%d. It must be >=0 and not NA." msgstr "" -#: assign.c:239 fsort.c:109 +#: assign.c:239 fsort.c:109 openmp-utils.c:67 msgid "verbose must be TRUE or FALSE" msgstr "" @@ -179,9 +180,9 @@ msgid "" "loop if possible for efficiency." msgstr "" -#: assign.c:329 +#: assign.c:329 subset.c:144 #, c-format -msgid "i[%d] is %d which is out of range [1,nrow=%d]." +msgid "i[%d] is %d which is out of range [1,nrow=%d]" msgstr "" #: assign.c:332 @@ -410,175 +411,168 @@ msgstr "" msgid "Shortening index '%s' to '%s' due to an update on a key column\n" msgstr "" -#: assign.c:680 +#: assign.c:683 +#, c-format +msgid "" +"Internal error memrecycle: sourceStart=%d sourceLen=%d length(source)=%d" +msgstr "" + +#: assign.c:685 +#, c-format +msgid "Internal error memrecycle: start=%d len=%d length(target)=%d" +msgstr "" + +#: assign.c:688 #, c-format msgid "Internal error: recycle length error not caught earlier. slen=%d len=%d" msgstr "" -#: assign.c:684 +#: assign.c:692 msgid "Internal error: memrecycle has received NULL colname" msgstr "" -#: assign.c:710 +#: assign.c:718 #, c-format msgid "" "Cannot assign 'factor' to '%s'. Factors can only be assigned to factor, " "character or list columns." msgstr "" -#: assign.c:724 +#: assign.c:732 #, c-format msgid "" "Assigning factor numbers to column %d named '%s'. But %d is outside the " "level range [1,%d]" msgstr "" -#: assign.c:732 +#: assign.c:740 #, c-format msgid "" "Assigning factor numbers to column %d named '%s'. But %f is outside the " "level range [1,%d], or is not a whole number." msgstr "" -#: assign.c:738 +#: assign.c:746 #, c-format msgid "" "Cannot assign '%s' to 'factor'. Factor columns can be assigned factor, " "character, NA in any type, or level numbers." msgstr "" -#: assign.c:759 +#: assign.c:767 msgid "" "Internal error: levels of target are either not unique or have truelength<0" msgstr "" -#: assign.c:798 +#: assign.c:806 #, c-format msgid "Unable to allocate working memory of %d bytes to combine factor levels" msgstr "" -#: assign.c:805 +#: assign.c:813 msgid "Internal error: extra level check sum failed" msgstr "" -#: assign.c:824 +#: assign.c:832 #, c-format msgid "" "Coercing 'character' RHS to '%s' to match the type of the target column " "(column %d named '%s')." msgstr "" -#: assign.c:830 +#: assign.c:838 #, c-format msgid "" "Cannot coerce 'list' RHS to 'integer64' to match the type of the target " "column (column %d named '%s')." msgstr "" -#: assign.c:835 +#: assign.c:843 #, c-format msgid "" "Coercing 'list' RHS to '%s' to match the type of the target column (column " "%d named '%s')." msgstr "" -#: assign.c:841 +#: assign.c:849 #, c-format msgid "Zero-copy coerce when assigning '%s' to '%s' column %d named '%s'.\n" msgstr "" -#: assign.c:936 +#: assign.c:944 #, c-format msgid "type '%s' cannot be coerced to '%s'" msgstr "" -#: assign.c:1056 +#: assign.c:1064 msgid "" "To assign integer64 to a character column, please use as.character() for " "clarity." msgstr "" -#: assign.c:1068 +#: assign.c:1076 #, c-format msgid "Unsupported column type in assign.c:memrecycle '%s'" msgstr "" -#: assign.c:1115 +#: assign.c:1123 #, c-format msgid "Internal error: writeNA passed a vector of type '%s'" msgstr "" -#: assign.c:1146 +#: assign.c:1154 #, c-format msgid "" "Internal error: savetl_init checks failed (%d %d %p %p). please report to " "data.table issue tracker." msgstr "" -#: assign.c:1154 +#: assign.c:1162 #, c-format msgid "Failed to allocate initial %d items in savetl_init" msgstr "" -#: assign.c:1163 +#: assign.c:1171 #, c-format msgid "" "Internal error: reached maximum %d items for savetl. Please report to data." "table issue tracker." msgstr "" -#: assign.c:1170 +#: assign.c:1178 #, c-format msgid "Failed to realloc saveds to %d items in savetl" msgstr "" -#: assign.c:1176 +#: assign.c:1184 #, c-format msgid "Failed to realloc savedtl to %d items in savetl" msgstr "" -#: assign.c:1199 +#: assign.c:1207 msgid "x must be a character vector" msgstr "" -#: assign.c:1200 +#: assign.c:1208 msgid "'which' must be an integer vector" msgstr "" -#: assign.c:1201 +#: assign.c:1209 msgid "'new' must be a character vector" msgstr "" -#: assign.c:1202 +#: assign.c:1210 #, c-format msgid "'new' is length %d. Should be the same as length of 'which' (%d)" msgstr "" -#: assign.c:1205 +#: assign.c:1213 #, c-format msgid "" "Item %d of 'which' is %d which is outside range of the length %d character " "vector" msgstr "" -#: assign.c:1215 -msgid "dt passed to setcolorder has no names" -msgstr "" - -#: assign.c:1217 -#, c-format -msgid "Internal error: dt passed to setcolorder has %d columns but %d names" -msgstr "" - -#: assign.c:1224 -msgid "" -"Internal error: o passed to Csetcolorder contains an NA or out-of-bounds" -msgstr "" - -#: assign.c:1226 -msgid "Internal error: o passed to Csetcolorder contains a duplicate" -msgstr "" - #: between.c:12 #, c-format msgid "" @@ -754,35 +748,40 @@ msgstr "" #: bmerge.c:410 #, c-format -msgid "Type '%s' not supported for joining/merging" +msgid "Type '%s' is not supported for joining/merging" msgstr "" #: bmerge.c:468 msgid "Internal error: xlow!=xupp-1 || xlowxuppIn" msgstr "" -#: chmatch.c:4 -#, c-format -msgid "x is type '%s' (must be 'character' or NULL)" -msgstr "" - #: chmatch.c:5 #, c-format msgid "table is type '%s' (must be 'character' or NULL)" msgstr "" -#: chmatch.c:6 +#: chmatch.c:7 msgid "Internal error: either chin or chmatchdup should be true not both" msgstr "" -#: chmatch.c:44 +#: chmatch.c:12 +#, c-format +msgid "Internal error: length of SYMSXP is %d not 1" +msgstr "" + +#: chmatch.c:19 +#, c-format +msgid "x is type '%s' (must be 'character' or NULL)" +msgstr "" + +#: chmatch.c:66 #, c-format msgid "" "Internal error: CHARSXP '%s' has a negative truelength (%d). Please file an " "issue on the data.table tracker." msgstr "" -#: chmatch.c:73 +#: chmatch.c:95 #, c-format msgid "" "Failed to allocate % bytes working memory in chmatchdup: " @@ -791,7 +790,7 @@ msgstr "" #: cj.c:89 #, c-format -msgid "Type '%s' not supported by CJ." +msgid "Type '%s' is not supported by CJ." msgstr "" #: coalesce.c:5 @@ -853,112 +852,109 @@ msgstr "" msgid "coalesce copied first item (inplace=FALSE)\n" msgstr "" -#: coalesce.c:166 +#: coalesce.c:166 fifelse.c:138 fifelse.c:337 shift.c:157 uniqlist.c:96 +#: uniqlist.c:127 uniqlist.c:208 uniqlist.c:245 uniqlist.c:318 #, c-format -msgid "Unsupported type: %s" +msgid "Type '%s' is not supported" msgstr "" -#: dogroups.c:14 +#: dogroups.c:15 msgid "Internal error: order not integer vector" msgstr "" -#: dogroups.c:15 +#: dogroups.c:16 msgid "Internal error: starts not integer" msgstr "" -#: dogroups.c:16 +#: dogroups.c:17 msgid "Internal error: lens not integer" msgstr "" -#: dogroups.c:18 +#: dogroups.c:19 msgid "Internal error: jiscols not NULL but o__ has length" msgstr "" -#: dogroups.c:19 +#: dogroups.c:20 msgid "Internal error: xjiscols not NULL but o__ has length" msgstr "" -#: dogroups.c:20 +#: dogroups.c:21 msgid "'env' should be an environment" msgstr "" -#: dogroups.c:39 +#: dogroups.c:40 #, c-format msgid "" "Internal error: unsupported size-0 type '%s' in column %d of 'by' should " "have been caught earlier" msgstr "" -#: dogroups.c:43 +#: dogroups.c:44 #, c-format msgid "!length(bynames)[%d]==length(groups)[%d]==length(grpcols)[%d]" msgstr "" -#: dogroups.c:62 +#: dogroups.c:63 msgid "row.names attribute of .SD not found" msgstr "" -#: dogroups.c:64 +#: dogroups.c:65 #, c-format msgid "" "row.names of .SD isn't integer length 2 with NA as first item; i.e., ." "set_row_names(). [%s %d %d]" msgstr "" -#: dogroups.c:69 +#: dogroups.c:70 msgid "length(names)!=length(SD)" msgstr "" -#: dogroups.c:73 +#: dogroups.c:74 #, c-format msgid "" "Internal error: size-0 type %d in .SD column %d should have been caught " "earlier" msgstr "" -#: dogroups.c:83 +#: dogroups.c:84 msgid "length(xknames)!=length(xSD)" msgstr "" -#: dogroups.c:87 +#: dogroups.c:88 #, c-format msgid "" "Internal error: type %d in .xSD column %d should have been caught by now" msgstr "" -#: dogroups.c:91 +#: dogroups.c:92 #, c-format msgid "length(iSD)[%d] != length(jiscols)[%d]" msgstr "" -#: dogroups.c:92 +#: dogroups.c:93 #, c-format msgid "length(xSD)[%d] != length(xjiscols)[%d]" msgstr "" -#: dogroups.c:155 dogroups.c:184 -msgid "Internal error. Type of column should have been checked by now" -msgstr "" - -#: dogroups.c:273 +#: dogroups.c:198 #, c-format msgid "j evaluates to type '%s'. Must evaluate to atomic vector or list." msgstr "" -#: dogroups.c:281 +#: dogroups.c:206 msgid "" "All items in j=list(...) should be atomic vectors or lists. If you are " "trying something like j=list(.SD,newcol=mean(colA)) then use := by group " "instead (much quicker), or cbind or merge afterwards." msgstr "" -#: dogroups.c:290 +#: dogroups.c:215 msgid "" "RHS of := is NULL during grouped assignment, but it's not possible to delete " "parts of a column." msgstr "" -#: dogroups.c:294 +#: dogroups.c:219 #, c-format msgid "" "Supplied %d items to be assigned to group %d of size %d in column '%s'. The " @@ -967,23 +963,23 @@ msgid "" "make this intent clear to readers of your code." msgstr "" -#: dogroups.c:305 +#: dogroups.c:230 msgid "" "Internal error: Trying to add new column by reference but tl is full; " "setalloccol should have run first at R level before getting to this point in " "dogroups" msgstr "" -#: dogroups.c:320 +#: dogroups.c:245 #, c-format msgid "Group %d column '%s': %s" msgstr "" -#: dogroups.c:327 +#: dogroups.c:252 msgid "j doesn't evaluate to the same number of columns for each group" msgstr "" -#: dogroups.c:361 +#: dogroups.c:286 #, c-format msgid "" "Column %d of j's result for the first group is NULL. We rely on the column " @@ -994,14 +990,14 @@ msgid "" "integer() or numeric()." msgstr "" -#: dogroups.c:364 +#: dogroups.c:289 msgid "" "j appears to be a named vector. The same names will likely be created over " "and over again for each group and slow things down. Try and pass a named " "list (which data.table optimizes) or an unnamed list() instead.\n" msgstr "" -#: dogroups.c:366 +#: dogroups.c:291 #, c-format msgid "" "Column %d of j is a named vector (each item down the rows is named, " @@ -1009,7 +1005,7 @@ msgid "" "over and over for each group). They are ignored anyway.\n" msgstr "" -#: dogroups.c:374 +#: dogroups.c:299 msgid "" "The result of j is a named list. It's very inefficient to create the same " "names over and over again for each group. When j=list(...), any names are " @@ -1018,17 +1014,17 @@ msgid "" "to :=). This message may be upgraded to warning in future.\n" msgstr "" -#: dogroups.c:386 +#: dogroups.c:311 #, c-format msgid "dogroups: growing from %d to %d rows\n" msgstr "" -#: dogroups.c:387 +#: dogroups.c:312 #, c-format msgid "dogroups: length(ans)[%d]!=ngrpcols[%d]+njval[%d]" msgstr "" -#: dogroups.c:420 +#: dogroups.c:330 #, c-format msgid "" "Item %d of j's result for group %d is zero length. This will be filled with " @@ -1037,14 +1033,14 @@ msgid "" "buffer." msgstr "" -#: dogroups.c:427 +#: dogroups.c:337 #, c-format msgid "" "Column %d of result for group %d is type '%s' but expecting type '%s'. " "Column types must be consistent for each group." msgstr "" -#: dogroups.c:429 +#: dogroups.c:339 #, c-format msgid "" "Supplied %d items for column %d of group %d which has %d rows. The RHS " @@ -1053,32 +1049,37 @@ msgid "" "make this intent clear to readers of your code." msgstr "" -#: dogroups.c:444 +#: dogroups.c:354 #, c-format msgid "Wrote less rows (%d) than allocated (%d).\n" msgstr "" -#: dogroups.c:454 +#: dogroups.c:364 #, c-format msgid "Internal error: block 0 [%d] and block 1 [%d] have both run" msgstr "" -#: dogroups.c:456 +#: dogroups.c:366 #, c-format msgid "" "\n" " %s took %.3fs for %d groups\n" msgstr "" -#: dogroups.c:458 +#: dogroups.c:368 #, c-format msgid " eval(j) took %.3fs for %d calls\n" msgstr "" -#: dogroups.c:482 +#: dogroups.c:392 msgid "growVector passed NULL" msgstr "" +#: dogroups.c:412 +#, c-format +msgid "Internal error: growVector doesn't support type '%s'" +msgstr "" + #: fastmean.c:39 msgid "narm should be TRUE or FALSE" msgstr "" @@ -1093,7 +1094,7 @@ msgstr "" msgid "Internal error: type '%s' not caught earlier in fastmean" msgstr "" -#: fcast.c:80 +#: fcast.c:78 #, c-format msgid "Unsupported column type in fcast val: '%s'" msgstr "" @@ -1102,60 +1103,63 @@ msgstr "" msgid "Argument 'test' must be logical." msgstr "" -#: fifelse.c:23 +#: fifelse.c:28 #, c-format msgid "" "'yes' is of type %s but 'no' is of type %s. Please make sure that both " "arguments have the same type." msgstr "" -#: fifelse.c:28 +#: fifelse.c:33 msgid "" "'yes' has different class than 'no'. Please make sure that both arguments " "have the same class." msgstr "" -#: fifelse.c:33 +#: fifelse.c:38 msgid "'yes' and 'no' are both type factor but their levels are different." msgstr "" -#: fifelse.c:38 +#: fifelse.c:43 #, c-format msgid "" "Length of 'yes' is % but must be 1 or length of 'test' (%)." msgstr "" -#: fifelse.c:40 +#: fifelse.c:45 #, c-format msgid "" "Length of 'no' is % but must be 1 or length of 'test' (%)." msgstr "" -#: fifelse.c:51 +#: fifelse.c:56 #, c-format msgid "Length of 'na' is % but must be 1" msgstr "" -#: fifelse.c:57 +#: fifelse.c:62 #, c-format msgid "" "'yes' is of type %s but 'na' is of type %s. Please make sure that both " "arguments have the same type." msgstr "" -#: fifelse.c:59 +#: fifelse.c:64 msgid "" "'yes' has different class than 'na'. Please make sure that both arguments " "have the same class." msgstr "" -#: fifelse.c:63 +#: fifelse.c:68 msgid "'yes' and 'na' are both type factor but their levels are different." msgstr "" -#: fifelse.c:133 +#: fifelse.c:152 #, c-format -msgid "Type %s is not supported." +msgid "" +"Received %d inputs; please supply an even number of arguments in ..., " +"consisting of logical condition, resulting value pairs (in that order). Note " +"that the default argument must be named explicitly, e.g., default=0" msgstr "" #: fmelt.c:18 @@ -1258,7 +1262,7 @@ msgid "" msgstr "" #: fmelt.c:280 -msgid "'variable.name' must be a character/integer vector of length=1." +msgid "'variable.name' must be a character/integer vector of length 1." msgstr "" #: fmelt.c:329 @@ -1558,54 +1562,40 @@ msgstr "" msgid "x must be type 'double'" msgstr "" -#: frank.c:11 -#, c-format -msgid "Internal error. Argument 'x' to Cdt_na is type '%s' not 'list'" -msgstr "" - -#: frank.c:12 +#: frank.c:9 frank.c:10 frank.c:150 frank.c:151 subset.c:92 subset.c:242 +#: subset.c:255 #, c-format -msgid "Internal error. Argument 'cols' to Cdt_na is type '%s' not 'integer'" +msgid "Internal error. Argument '%s' to %s is type '%s' not '%s'" msgstr "" -#: frank.c:16 frank.c:146 subset.c:263 +#: frank.c:14 frank.c:155 #, c-format msgid "Item %d of 'cols' is %d which is outside 1-based range [1,ncol(x)=%d]" msgstr "" -#: frank.c:26 frank.c:155 +#: frank.c:24 frank.c:164 #, c-format msgid "" "Column %d of input list x is length %d, inconsistent with first column of " "that item which is length %d." msgstr "" -#: frank.c:65 frank.c:202 transpose.c:88 +#: frank.c:63 frank.c:211 transpose.c:88 #, c-format msgid "Unsupported column type '%s'" msgstr "" -#: frank.c:83 +#: frank.c:82 msgid "" "Internal error: invalid ties.method for frankv(), should have been caught " "before. please report to data.table issue tracker" msgstr "" -#: frank.c:130 +#: frank.c:139 #, c-format msgid "Internal error: unknown ties value in frank: %d" msgstr "" -#: frank.c:141 -#, c-format -msgid "Internal error. Argument 'x' to CanyNA is type '%s' not 'list'" -msgstr "" - -#: frank.c:142 -#, c-format -msgid "Internal error. Argument 'cols' to CanyNA is type '%s' not 'integer'" -msgstr "" - #: fread.c:104 #, c-format msgid "" @@ -1642,332 +1632,332 @@ msgstr "" msgid " File copy in RAM took %.3f seconds.\n" msgstr "" -#: fread.c:1093 +#: fread.c:1105 msgid "" "Previous fread() session was not cleaned up properly. Cleaned up ok at the " "beginning of this fread() call.\n" msgstr "" -#: fread.c:1096 +#: fread.c:1108 msgid "[01] Check arguments\n" msgstr "" -#: fread.c:1103 +#: fread.c:1115 #, c-format msgid " Using %d threads (omp_get_max_threads()=%d, nth=%d)\n" msgstr "" -#: fread.c:1111 +#: fread.c:1123 msgid "" "Internal error: NAstrings is itself NULL. When empty it should be pointer to " "NULL." msgstr "" -#: fread.c:1129 +#: fread.c:1141 #, c-format msgid "freadMain: NAstring <<%s>> has whitespace at the beginning or end" msgstr "" -#: fread.c:1134 +#: fread.c:1146 #, c-format msgid "" "freadMain: NAstring <<%s>> is recognized as type boolean, this is not " "permitted." msgstr "" -#: fread.c:1144 +#: fread.c:1156 msgid " No NAstrings provided.\n" msgstr "" -#: fread.c:1146 +#: fread.c:1158 msgid " NAstrings = [" msgstr "" -#: fread.c:1149 +#: fread.c:1161 msgid "]\n" msgstr "" -#: fread.c:1151 +#: fread.c:1163 msgid " One or more of the NAstrings looks like a number.\n" msgstr "" -#: fread.c:1153 +#: fread.c:1165 msgid " None of the NAstrings look like numbers.\n" msgstr "" -#: fread.c:1155 +#: fread.c:1167 #, c-format msgid " skip num lines = %\n" msgstr "" -#: fread.c:1156 +#: fread.c:1168 #, c-format msgid " skip to string = <<%s>>\n" msgstr "" -#: fread.c:1157 +#: fread.c:1169 #, c-format msgid " show progress = %d\n" msgstr "" -#: fread.c:1158 +#: fread.c:1170 #, c-format msgid " 0/1 column will be read as %s\n" msgstr "" -#: fread.c:1166 +#: fread.c:1178 #, c-format msgid "sep == quote ('%c') is not allowed" msgstr "" -#: fread.c:1167 +#: fread.c:1179 msgid "dec='' not allowed. Should be '.' or ','" msgstr "" -#: fread.c:1168 +#: fread.c:1180 #, c-format msgid "sep == dec ('%c') is not allowed" msgstr "" -#: fread.c:1169 +#: fread.c:1181 #, c-format msgid "quote == dec ('%c') is not allowed" msgstr "" -#: fread.c:1186 +#: fread.c:1198 msgid "[02] Opening the file\n" msgstr "" -#: fread.c:1189 +#: fread.c:1201 msgid "" " `input` argument is provided rather than a file name, interpreting as raw " "text to read\n" msgstr "" -#: fread.c:1193 +#: fread.c:1205 msgid "Internal error: last byte of character input isn't \\0" msgstr "" -#: fread.c:1196 +#: fread.c:1208 #, c-format msgid " Opening file %s\n" msgstr "" -#: fread.c:1200 +#: fread.c:1212 #, c-format msgid "file not found: %s" msgstr "" -#: fread.c:1204 +#: fread.c:1216 #, c-format msgid "Opened file ok but couldn't obtain its size: %s" msgstr "" -#: fread.c:1207 fread.c:1235 +#: fread.c:1219 fread.c:1247 #, c-format msgid "File is empty: %s" msgstr "" -#: fread.c:1208 fread.c:1236 +#: fread.c:1220 fread.c:1248 #, c-format msgid " File opened, size = %s.\n" msgstr "" -#: fread.c:1225 +#: fread.c:1237 #, c-format msgid "File not found: %s" msgstr "" -#: fread.c:1231 +#: fread.c:1243 #, c-format msgid "Unable to open file after %d attempts (error %d): %s" msgstr "" -#: fread.c:1233 +#: fread.c:1245 #, c-format msgid "GetFileSizeEx failed (returned 0) on file: %s" msgstr "" -#: fread.c:1238 +#: fread.c:1250 #, c-format msgid "This is Windows, CreateFileMapping returned error %d for file %s" msgstr "" -#: fread.c:1245 +#: fread.c:1257 #, c-format msgid "" "Opened %s file ok but could not memory map it. This is a %dbit process. %s." msgstr "" -#: fread.c:1246 +#: fread.c:1258 msgid "Please upgrade to 64bit" msgstr "" -#: fread.c:1246 +#: fread.c:1258 msgid "There is probably not enough contiguous virtual memory available" msgstr "" -#: fread.c:1249 +#: fread.c:1261 msgid " Memory mapped ok\n" msgstr "" -#: fread.c:1251 +#: fread.c:1263 msgid "" "Internal error: Neither `input` nor `filename` are given, nothing to read." msgstr "" -#: fread.c:1268 +#: fread.c:1280 msgid "[03] Detect and skip BOM\n" msgstr "" -#: fread.c:1272 +#: fread.c:1284 msgid "" " UTF-8 byte order mark EF BB BF found at the start of the file and " "skipped.\n" msgstr "" -#: fread.c:1277 +#: fread.c:1289 msgid "" "GB-18030 encoding detected, however fread() is unable to decode it. Some " "character fields may be garbled.\n" msgstr "" -#: fread.c:1280 +#: fread.c:1292 msgid "" "File is encoded in UTF-16, this encoding is not supported by fread(). Please " "recode the file to UTF-8." msgstr "" -#: fread.c:1285 +#: fread.c:1297 #, c-format msgid " Last byte(s) of input found to be %s and removed.\n" msgstr "" -#: fread.c:1288 +#: fread.c:1300 msgid "Input is empty or only contains BOM or terminal control characters" msgstr "" -#: fread.c:1295 +#: fread.c:1307 msgid "[04] Arrange mmap to be \\0 terminated\n" msgstr "" -#: fread.c:1302 +#: fread.c:1314 msgid "" " No \\n exists in the file at all, so single \\r (if any) will be taken as " "one line ending. This is unusual but will happen normally when there is no " "\\r either; e.g. a single line missing its end of line.\n" msgstr "" -#: fread.c:1303 +#: fread.c:1315 msgid "" " \\n has been found in the input and different lines can end with different " "line endings (e.g. mixed \\n and \\r\\n in one file). This is common and " "ideal.\n" msgstr "" -#: fread.c:1327 +#: fread.c:1339 #, c-format msgid "" " File ends abruptly with '%c'. Final end-of-line is missing. Using cow page " "to write 0 to the last byte.\n" msgstr "" -#: fread.c:1333 +#: fread.c:1345 msgid "" "This file is very unusual: it ends abruptly without a final newline, and " "also its size is a multiple of 4096 bytes. Please properly end the last row " "with a newline using for example 'echo >> file' to avoid this " msgstr "" -#: fread.c:1334 +#: fread.c:1346 #, c-format msgid " File ends abruptly with '%c'. Copying file in RAM. %s copy.\n" msgstr "" -#: fread.c:1368 +#: fread.c:1380 msgid "[05] Skipping initial rows if needed\n" msgstr "" -#: fread.c:1374 +#: fread.c:1386 #, c-format msgid "" "skip='%s' not found in input (it is case sensitive and literal; i.e., no " "patterns, wildcards or regex)" msgstr "" -#: fread.c:1380 +#: fread.c:1392 #, c-format msgid "" "Found skip='%s' on line %. Taking this to be header row or first row " "of data.\n" msgstr "" -#: fread.c:1393 +#: fread.c:1405 #, c-format msgid " Skipped to line % in the file" msgstr "" -#: fread.c:1394 +#: fread.c:1406 #, c-format msgid "skip=% but the input only has % line%s" msgstr "" -#: fread.c:1403 +#: fread.c:1415 msgid "" "Input is either empty, fully whitespace, or skip has been set after the last " "non-whitespace." msgstr "" -#: fread.c:1405 +#: fread.c:1417 #, c-format msgid " Moved forward to first non-blank line (%d)\n" msgstr "" -#: fread.c:1406 +#: fread.c:1418 #, c-format msgid " Positioned on line %d starting: <<%s>>\n" msgstr "" -#: fread.c:1424 +#: fread.c:1436 msgid "[06] Detect separator, quoting rule, and ncolumns\n" msgstr "" -#: fread.c:1428 +#: fread.c:1440 msgid " sep='\\n' passed in meaning read lines as single character column\n" msgstr "" -#: fread.c:1447 +#: fread.c:1459 msgid " Detecting sep automatically ...\n" msgstr "" -#: fread.c:1454 +#: fread.c:1466 #, c-format msgid " Using supplied sep '%s'\n" msgstr "" -#: fread.c:1488 +#: fread.c:1500 #, c-format msgid " with %d fields using quote rule %d\n" msgstr "" -#: fread.c:1538 +#: fread.c:1550 #, c-format msgid " with %d lines of %d fields using quote rule %d\n" msgstr "" -#: fread.c:1545 +#: fread.c:1557 msgid "" " No sep and quote rule found a block of 2x2 or greater. Single column " "input.\n" msgstr "" -#: fread.c:1561 +#: fread.c:1573 msgid "" "Single column input contains invalid quotes. Self healing only effective " "when ncol>1" msgstr "" -#: fread.c:1566 +#: fread.c:1578 #, c-format msgid "" "Found and resolved improper quoting in first %d rows. If the fields are not " @@ -1975,282 +1965,282 @@ msgid "" "\"\" to avoid this warning." msgstr "" -#: fread.c:1582 +#: fread.c:1594 #, c-format msgid "" "Internal error: ncol==%d line==%d after detecting sep, ncol and first line" msgstr "" -#: fread.c:1585 +#: fread.c:1597 #, c-format msgid "Internal error: first line has field count %d but expecting %d" msgstr "" -#: fread.c:1587 +#: fread.c:1599 #, c-format msgid "" " Detected %d columns on line %d. This line is either column names or first " "data row. Line starts as: <<%s>>\n" msgstr "" -#: fread.c:1589 +#: fread.c:1601 #, c-format msgid " Quote rule picked = %d\n" msgstr "" -#: fread.c:1590 +#: fread.c:1602 #, c-format msgid " fill=%s and the most number of columns found is %d\n" msgstr "" -#: fread.c:1596 +#: fread.c:1608 msgid "" "This file is very unusual: it's one single column, ends with 2 or more end-" "of-line (representing several NA at the end), and is a multiple of 4096, too." msgstr "" -#: fread.c:1597 +#: fread.c:1609 #, c-format msgid " Copying file in RAM. %s\n" msgstr "" -#: fread.c:1603 +#: fread.c:1615 msgid "" " 1-column file ends with 2 or more end-of-line. Restoring last eol using " "extra byte in cow page.\n" msgstr "" -#: fread.c:1622 +#: fread.c:1634 msgid "" "[07] Detect column types, good nrow estimate and whether first row is column " "names\n" msgstr "" -#: fread.c:1623 +#: fread.c:1635 #, c-format msgid " 'header' changed by user from 'auto' to %s\n" msgstr "" -#: fread.c:1627 +#: fread.c:1639 #, c-format msgid "Failed to allocate 2 x %d bytes for type and tmpType: %s" msgstr "" -#: fread.c:1648 +#: fread.c:1660 #, c-format msgid " Number of sampling jump points = %d because " msgstr "" -#: fread.c:1649 +#: fread.c:1661 #, c-format msgid "nrow limit (%) supplied\n" msgstr "" -#: fread.c:1650 +#: fread.c:1662 msgid "jump0size==0\n" msgstr "" -#: fread.c:1651 +#: fread.c:1663 #, c-format msgid "" "(% bytes from row 1 to eof) / (2 * % jump0size) == " "%\n" msgstr "" -#: fread.c:1689 +#: fread.c:1701 #, c-format msgid "" " A line with too-%s fields (%d/%d) was found on line %d of sample jump %d. " "%s\n" msgstr "" -#: fread.c:1690 +#: fread.c:1702 msgid "few" msgstr "" -#: fread.c:1690 +#: fread.c:1702 msgid "many" msgstr "" -#: fread.c:1690 +#: fread.c:1702 msgid "" "Most likely this jump landed awkwardly so type bumps here will be skipped." msgstr "" -#: fread.c:1716 +#: fread.c:1728 #, c-format msgid " Type codes (jump %03d) : %s Quote rule %d\n" msgstr "" -#: fread.c:1729 +#: fread.c:1741 #, c-format msgid "" " 'header' determined to be true due to column %d containing a string on row " "1 and a lower type (%s) in the rest of the %d sample rows\n" msgstr "" -#: fread.c:1741 +#: fread.c:1753 msgid "" "Internal error: row before first data row has the same number of fields but " "we're not using it." msgstr "" -#: fread.c:1742 +#: fread.c:1754 msgid "" "Internal error: ch!=pos after counting fields in the line before the first " "data row." msgstr "" -#: fread.c:1743 +#: fread.c:1755 #, c-format msgid "" "Types in 1st data row match types in 2nd data row but previous row has %d " "fields. Taking previous row as column names." msgstr "" -#: fread.c:1746 +#: fread.c:1758 #, c-format msgid "" "Detected %d column names but the data has %d columns (i.e. invalid file). " "Added %d extra default column name%s\n" msgstr "" -#: fread.c:1747 +#: fread.c:1759 msgid "" " for the first column which is guessed to be row names or an index. Use " "setnames() afterwards if this guess is not correct, or fix the file write " "command that created the file to create a valid file." msgstr "" -#: fread.c:1747 +#: fread.c:1759 msgid "s at the end." msgstr "" -#: fread.c:1749 +#: fread.c:1761 msgid "" "Internal error: fill=true but there is a previous row which should already " "have been filled." msgstr "" -#: fread.c:1750 +#: fread.c:1762 #, c-format msgid "" "Detected %d column names but the data has %d columns. Filling rows " "automatically. Set fill=TRUE explicitly to avoid this warning.\n" msgstr "" -#: fread.c:1754 +#: fread.c:1766 #, c-format msgid "Failed to realloc 2 x %d bytes for type and tmpType: %s" msgstr "" -#: fread.c:1774 +#: fread.c:1786 #, c-format msgid "" " 'header' determined to be %s because there are%s number fields in the " "first and only row\n" msgstr "" -#: fread.c:1774 +#: fread.c:1786 msgid " no" msgstr "" -#: fread.c:1777 +#: fread.c:1789 msgid "" " 'header' determined to be true because all columns are type string and a " "better guess is not possible\n" msgstr "" -#: fread.c:1779 +#: fread.c:1791 msgid "" " 'header' determined to be false because there are some number columns and " "those columns do not have a string field at the top of them\n" msgstr "" -#: fread.c:1795 +#: fread.c:1807 #, c-format msgid " Type codes (first row) : %s Quote rule %d\n" msgstr "" -#: fread.c:1804 +#: fread.c:1816 #, c-format msgid "" " All rows were sampled since file is small so we know nrow=% " "exactly\n" msgstr "" -#: fread.c:1816 fread.c:1823 +#: fread.c:1828 fread.c:1835 msgid " =====\n" msgstr "" -#: fread.c:1817 +#: fread.c:1829 #, c-format msgid "" " Sampled % rows (handled \\n inside quoted fields) at %d jump " "points\n" msgstr "" -#: fread.c:1818 +#: fread.c:1830 #, c-format msgid "" " Bytes from first data row on line %d to the end of last row: %\n" msgstr "" -#: fread.c:1819 +#: fread.c:1831 #, c-format msgid " Line length: mean=%.2f sd=%.2f min=%d max=%d\n" msgstr "" -#: fread.c:1820 +#: fread.c:1832 #, c-format msgid " Estimated number of rows: % / %.2f = %\n" msgstr "" -#: fread.c:1821 +#: fread.c:1833 #, c-format msgid "" " Initial alloc = % rows (% + %d%%) using bytes/" "max(mean-2*sd,min) clamped between [1.1*estn, 2.0*estn]\n" msgstr "" -#: fread.c:1825 +#: fread.c:1837 #, c-format msgid "Internal error: sampleLines(%) > allocnrow(%)" msgstr "" -#: fread.c:1829 +#: fread.c:1841 #, c-format msgid " Alloc limited to lower nrows=% passed in.\n" msgstr "" -#: fread.c:1841 +#: fread.c:1853 msgid "[08] Assign column names\n" msgstr "" -#: fread.c:1849 +#: fread.c:1861 #, c-format msgid "Unable to allocate %d*%d bytes for column name pointers: %s" msgstr "" -#: fread.c:1871 +#: fread.c:1883 #, c-format msgid "Internal error: reading colnames ending on '%c'" msgstr "" -#: fread.c:1889 +#: fread.c:1901 msgid "[09] Apply user overrides on column types\n" msgstr "" -#: fread.c:1893 +#: fread.c:1905 msgid " Cancelled by user: userOverride() returned false." msgstr "" -#: fread.c:1903 +#: fread.c:1915 #, c-format msgid "Failed to allocate %d bytes for size array: %s" msgstr "" -#: fread.c:1910 +#: fread.c:1922 #, c-format msgid "" "Attempt to override column %d <<%.*s>> of inherent type '%s' down to '%s' " @@ -2258,103 +2248,103 @@ msgid "" "was intended, please coerce to the lower type afterwards." msgstr "" -#: fread.c:1924 +#: fread.c:1936 #, c-format msgid " After %d type and %d drop user overrides : %s\n" msgstr "" -#: fread.c:1932 +#: fread.c:1944 msgid "[10] Allocate memory for the datatable\n" msgstr "" -#: fread.c:1933 +#: fread.c:1945 #, c-format msgid " Allocating %d column slots (%d - %d dropped) with % rows\n" msgstr "" -#: fread.c:1987 +#: fread.c:1999 #, c-format msgid "Buffer size % is too large\n" msgstr "" -#: fread.c:1990 +#: fread.c:2002 msgid "[11] Read the data\n" msgstr "" -#: fread.c:1993 +#: fread.c:2005 #, c-format msgid " jumps=[%d..%d), chunk_size=%, total_size=%\n" msgstr "" -#: fread.c:2005 +#: fread.c:2017 #, c-format msgid "Internal error: Master thread is not thread 0 but thread %d.\n" msgstr "" -#: fread.c:2213 +#: fread.c:2225 #, c-format msgid "" "Column %d (\"%.*s\") bumped from '%s' to '%s' due to <<%.*s>> on row " "%\n" msgstr "" -#: fread.c:2262 +#: fread.c:2274 #, c-format msgid "" "Internal error: invalid head position. jump=%d, headPos=%p, thisJumpStart=" "%p, sof=%p" msgstr "" -#: fread.c:2335 +#: fread.c:2347 #, c-format msgid "" " Too few rows allocated. Allocating additional % rows (now nrows=" "%) and continue reading from jump %d\n" msgstr "" -#: fread.c:2342 +#: fread.c:2354 #, c-format msgid " Restarting team from jump %d. nSwept==%d quoteRule==%d\n" msgstr "" -#: fread.c:2362 +#: fread.c:2374 #, c-format msgid " %d out-of-sample type bumps: %s\n" msgstr "" -#: fread.c:2398 +#: fread.c:2410 #, c-format msgid "" "Read % rows x %d columns from %s file in %02d:%06.3f wall clock " "time\n" msgstr "" -#: fread.c:2405 +#: fread.c:2417 msgid "[12] Finalizing the datatable\n" msgstr "" -#: fread.c:2406 +#: fread.c:2418 msgid " Type counts:\n" msgstr "" -#: fread.c:2408 +#: fread.c:2420 #, c-format msgid "%10d : %-9s '%c'\n" msgstr "" -#: fread.c:2424 +#: fread.c:2436 #, c-format msgid "Discarded single-line footer: <<%s>>" msgstr "" -#: fread.c:2429 +#: fread.c:2441 #, c-format msgid "" "Stopped early on line %. Expected %d fields but found %d. Consider " "fill=TRUE and comment.char=. First discarded non-empty line: <<%s>>" msgstr "" -#: fread.c:2435 +#: fread.c:2447 #, c-format msgid "" "Found and resolved improper quoting out-of-sample. First healed line " @@ -2362,67 +2352,67 @@ msgid "" "not appear within any field), try quote=\"\" to avoid this warning." msgstr "" -#: fread.c:2439 +#: fread.c:2451 msgid "=============================\n" msgstr "" -#: fread.c:2441 +#: fread.c:2453 #, c-format msgid "%8.3fs (%3.0f%%) Memory map %.3fGB file\n" msgstr "" -#: fread.c:2442 +#: fread.c:2454 #, c-format msgid "%8.3fs (%3.0f%%) sep=" msgstr "" -#: fread.c:2444 +#: fread.c:2456 #, c-format msgid " ncol=%d and header detection\n" msgstr "" -#: fread.c:2445 +#: fread.c:2457 #, c-format msgid "%8.3fs (%3.0f%%) Column type detection using % sample rows\n" msgstr "" -#: fread.c:2447 +#: fread.c:2459 #, c-format msgid "" "%8.3fs (%3.0f%%) Allocation of % rows x %d cols (%.3fGB) of which " "% (%3.0f%%) rows used\n" msgstr "" -#: fread.c:2451 +#: fread.c:2463 #, c-format msgid "" "%8.3fs (%3.0f%%) Reading %d chunks (%d swept) of %.3fMB (each chunk %d rows) " "using %d threads\n" msgstr "" -#: fread.c:2453 +#: fread.c:2465 #, c-format msgid "" " + %8.3fs (%3.0f%%) Parse to row-major thread buffers (grown %d times)\n" msgstr "" -#: fread.c:2454 +#: fread.c:2466 #, c-format msgid " + %8.3fs (%3.0f%%) Transpose\n" msgstr "" -#: fread.c:2455 +#: fread.c:2467 #, c-format msgid " + %8.3fs (%3.0f%%) Waiting\n" msgstr "" -#: fread.c:2456 +#: fread.c:2468 #, c-format msgid "" "%8.3fs (%3.0f%%) Rereading %d columns due to out-of-sample type exceptions\n" msgstr "" -#: fread.c:2458 +#: fread.c:2470 #, c-format msgid "%8.3fs Total\n" msgstr "" @@ -2504,7 +2494,7 @@ msgid "" "but colClasses= has been provided as well. Please remove colClasses=." msgstr "" -#: freadR.c:196 freadR.c:346 +#: freadR.c:196 freadR.c:342 msgid "colClasses is type list but has no names" msgstr "" @@ -2569,11 +2559,6 @@ msgid "Column number %d ('%s') has been selected twice by select=" msgstr "" #: freadR.c:313 -msgid "" -"colClasses='NULL' is not permitted; i.e. to drop all columns and load nothing" -msgstr "" - -#: freadR.c:318 #, c-format msgid "" "colClasses= is an unnamed vector of types, length %d, but there are %d " @@ -2582,54 +2567,54 @@ msgid "" "colClasses=. Please see examples in ?fread." msgstr "" -#: freadR.c:329 +#: freadR.c:325 msgid "Internal error: selectInts is NULL but selectColClasses is true" msgstr "" -#: freadR.c:330 +#: freadR.c:327 msgid "" "Internal error: length(selectSxp)!=length(colClassesSxp) but " "selectColClasses is true" msgstr "" -#: freadR.c:344 +#: freadR.c:340 #, c-format msgid "colClasses is type '%s' but should be list or character" msgstr "" -#: freadR.c:368 +#: freadR.c:364 #, c-format msgid "Column name '%s' (colClasses[[%d]][%d]) not found" msgstr "" -#: freadR.c:370 +#: freadR.c:366 #, c-format msgid "colClasses[[%d]][%d] is NA" msgstr "" -#: freadR.c:374 +#: freadR.c:370 #, c-format msgid "" "Column %d ('%s') appears more than once in colClasses. The second time is " "colClasses[[%d]][%d]." msgstr "" -#: freadR.c:381 +#: freadR.c:377 #, c-format msgid "Column number %d (colClasses[[%d]][%d]) is out of range [1,ncol=%d]" msgstr "" -#: freadR.c:583 +#: freadR.c:579 #, c-format msgid "Field size is 1 but the field is of type %d\n" msgstr "" -#: freadR.c:592 +#: freadR.c:588 #, c-format msgid "Internal error: unexpected field of size %d\n" msgstr "" -#: freadR.c:660 +#: freadR.c:656 #, c-format msgid "%s" msgstr "" @@ -2798,7 +2783,7 @@ msgid "" "caught before. please report to data.table issue tracker." msgstr "" -#: frollR.c:155 frollR.c:279 nafill.c:152 shift.c:21 +#: frollR.c:155 frollR.c:279 nafill.c:162 shift.c:21 msgid "fill must be a vector of length 1" msgstr "" @@ -2870,7 +2855,7 @@ msgid "%s: running in parallel for input length %, hasna %d, narm %d\n" msgstr "" #: fsort.c:111 -msgid "x must be a vector of type 'double' currently" +msgid "x must be a vector of type double currently" msgstr "" #: fsort.c:122 @@ -3068,15 +3053,16 @@ msgstr "" #: fwriteR.c:98 #, c-format msgid "" -"Row %d of list column is type '%s' - not yet implemented. fwrite() can write " -"list columns containing items which are atomic vectors of type logical, " -"integer, integer64, double, complex and character." +"Row % of list column is type '%s' - not yet implemented. fwrite() " +"can write list columns containing items which are atomic vectors of type " +"logical, integer, integer64, double, complex and character." msgstr "" #: fwriteR.c:103 #, c-format msgid "" -"Internal error: row %d of list column has no max length method implemented" +"Internal error: row % of list column has no max length method " +"implemented" msgstr "" #: fwriteR.c:170 @@ -3088,30 +3074,31 @@ msgstr "" msgid "fwrite was passed an empty list of no columns. Nothing to write." msgstr "" -#: fwriteR.c:234 +#: fwriteR.c:232 #, c-format -msgid "Column %d's length (%d) is not the same as column 1's length (%d)" +msgid "" +"Column %d's length (%d) is not the same as column 1's length (%)" msgstr "" -#: fwriteR.c:237 +#: fwriteR.c:236 #, c-format msgid "Column %d's type is '%s' - not yet implemented in fwrite." msgstr "" -#: fwriteR.c:262 +#: fwriteR.c:261 msgid "" "No list columns are present. Setting sep2='' otherwise quote='auto' would " "quote fields containing sep2.\n" msgstr "" -#: fwriteR.c:266 +#: fwriteR.c:265 #, c-format msgid "" "If quote='auto', fields will be quoted if the field contains either sep " "('%c') or sep2 ('%c') because column %d is a list column.\n" msgstr "" -#: fwriteR.c:270 +#: fwriteR.c:269 #, c-format msgid "" "sep ('%c'), sep2 ('%c') and dec ('%c') must all be different. Column %d is a " @@ -3208,11 +3195,12 @@ msgid "" "convenience." msgstr "" -#: gsumm.c:565 +#: gsumm.c:565 gsumm.c:650 gsumm.c:794 gsumm.c:940 gsumm.c:992 gsumm.c:1073 +#: gsumm.c:1153 gsumm.c:1250 gsumm.c:1382 gsumm.c:1384 gsumm.c:1446 #, c-format msgid "" -"Type '%s' not supported by GForce sum (gsum). Either add the prefix base::" -"sum(.) or turn off GForce optimization using options(datatable.optimize=1)" +"Type '%s' is not supported by GForce %s. Either add the prefix %s or turn " +"off GForce optimization using options(datatable.optimize=1)" msgstr "" #: gsumm.c:578 @@ -3245,16 +3233,9 @@ msgstr "" msgid "Unable to allocate %d * %d bytes for si in gmean na.rm=TRUE" msgstr "" -#: gsumm.c:650 +#: gsumm.c:674 utils.c:280 #, c-format -msgid "" -"Type '%s' not supported by GForce mean (gmean) na.rm=TRUE. Either add the " -"prefix base::mean(.) or turn off GForce optimization using options(datatable." -"optimize=1)" -msgstr "" - -#: gsumm.c:674 -msgid "Internal error: unsupported type at the end of gmean" +msgid "Internal error: type '%s' not supported in %s" msgstr "" #: gsumm.c:687 @@ -3291,13 +3272,6 @@ msgstr "" msgid "Type 'complex' has no well-defined min" msgstr "" -#: gsumm.c:794 -#, c-format -msgid "" -"Type '%s' not supported by GForce min (gmin). Either add the prefix base::" -"min(.) or turn off GForce optimization using options(datatable.optimize=1)" -msgstr "" - #: gsumm.c:806 msgid "" "GForce max can only be applied to columns, not .SD or similar. To find max " @@ -3320,13 +3294,6 @@ msgstr "" msgid "Type 'complex' has no well-defined max" msgstr "" -#: gsumm.c:940 -#, c-format -msgid "" -"Type '%s' not supported by GForce max (gmax). Either add the prefix base::" -"max(.) or turn off GForce optimization using options(datatable.optimize=1)" -msgstr "" - #: gsumm.c:951 msgid "" "GForce median can only be applied to columns, not .SD or similar. To find " @@ -3340,28 +3307,6 @@ msgstr "" msgid "median is not meaningful for factors." msgstr "" -#: gsumm.c:992 -#, c-format -msgid "" -"Type '%s' not supported by GForce median (gmedian). Either add the prefix " -"stats::median(.) or turn off GForce optimization using options(datatable." -"optimize=1)" -msgstr "" - -#: gsumm.c:1073 -#, c-format -msgid "" -"Type '%s' not supported by GForce tail (gtail). Either add the prefix utils::" -"tail(.) or turn off GForce optimization using options(datatable.optimize=1)" -msgstr "" - -#: gsumm.c:1153 -#, c-format -msgid "" -"Type '%s' not supported by GForce head (ghead). Either add the prefix utils::" -"head(.) or turn off GForce optimization using options(datatable.optimize=1)" -msgstr "" - #: gsumm.c:1161 msgid "" "Internal error, gtail is only implemented for n=1. This should have been " @@ -3381,14 +3326,6 @@ msgid "" "please report to data.table issue tracker." msgstr "" -#: gsumm.c:1250 -#, c-format -msgid "" -"Type '%s' not supported by GForce subset `[` (gnthvalue). Either add the " -"prefix utils::head(.) or turn off GForce optimization using " -"options(datatable.optimize=1)" -msgstr "" - #: gsumm.c:1262 msgid "" "GForce var/sd can only be applied to columns, not .SD or similar. For the " @@ -3403,20 +3340,6 @@ msgstr "" msgid "var/sd is not meaningful for factors." msgstr "" -#: gsumm.c:1382 -#, c-format -msgid "" -"Type '%s' not supported by GForce var (gvar). Either add the prefix stats::" -"var(.) or turn off GForce optimization using options(datatable.optimize=1)" -msgstr "" - -#: gsumm.c:1384 -#, c-format -msgid "" -"Type '%s' not supported by GForce sd (gsd). Either add the prefix stats::" -"sd(.) or turn off GForce optimization using options(datatable.optimize=1)" -msgstr "" - #: gsumm.c:1403 msgid "" "GForce prod can only be applied to columns, not .SD or similar. To multiply " @@ -3434,13 +3357,6 @@ msgstr "" msgid "Unable to allocate %d * %d bytes for gprod" msgstr "" -#: gsumm.c:1446 -#, c-format -msgid "" -"Type '%s' not supported by GForce prod (gprod). Either add the prefix base::" -"prod(.) or turn off GForce optimization using options(datatable.optimize=1)" -msgstr "" - #: ijoin.c:22 ijoin.c:243 msgid "" "Internal error: invalid value for 'mult'; this should have been caught " @@ -3679,13 +3595,13 @@ msgstr "" msgid "'x' argument must be numeric type, or list/data.table of numeric types" msgstr "" -#: nafill.c:149 nafill.c:180 +#: nafill.c:159 nafill.c:190 msgid "" "Internal error: invalid type argument in nafillR function, should have been " "caught before. Please report to data.table issue tracker." msgstr "" -#: nafill.c:196 +#: nafill.c:206 #, c-format msgid "%s: parallel processing of %d column(s) took %.3fs\n" msgstr "" @@ -3704,10 +3620,6 @@ msgid "" "integer between 2 and 100. Default is 50. See ?setDTtheads." msgstr "" -#: openmp-utils.c:67 -msgid "'verbose' must be TRUE or FALSE" -msgstr "" - #: openmp-utils.c:70 msgid "" "This installation of data.table has not been compiled with OpenMP support.\n" @@ -4015,15 +3927,20 @@ msgstr "" msgid "nrow(x)[%d]!=length(order)[%d]" msgstr "" -#: reorder.c:48 +#: reorder.c:51 #, c-format -msgid "order is not a permutation of 1:nrow[%d]" +msgid "" +"Item %d of order (%d) is either NA, out of range [1,%d], or is duplicated. " +"The new order must be a strict permutation of 1:n" +msgstr "" + +#: reorder.c:105 +msgid "dt passed to setcolorder has no names" msgstr "" -#: reorder.c:57 +#: reorder.c:107 #, c-format -msgid "" -"Unable to allocate %d * %d bytes of working memory for reordering data.table" +msgid "Internal error: dt passed to setcolorder has %d columns but %d names" msgstr "" #: shift.c:17 @@ -4047,108 +3964,93 @@ msgstr "" msgid "Item %d of n is NA" msgstr "" -#: shift.c:157 -#, c-format -msgid "Unsupported type '%s'" -msgstr "" - #: subset.c:7 #, c-format msgid "Internal error: subsetVectorRaw length(ans)==%d n=%d" msgstr "" -#: subset.c:88 +#: subset.c:83 #, c-format msgid "" "Internal error: column type '%s' not supported by data.table subset. All " "known types are supported so please report as bug." msgstr "" -#: subset.c:97 subset.c:121 +#: subset.c:116 #, c-format msgid "Internal error. 'idx' is type '%s' not 'integer'" msgstr "" -#: subset.c:122 +#: subset.c:117 #, c-format msgid "" "Internal error. 'maxArg' is type '%s' and length %d, should be an integer " "singleton" msgstr "" -#: subset.c:123 +#: subset.c:118 msgid "Internal error: allowOverMax must be TRUE/FALSE" msgstr "" -#: subset.c:125 +#: subset.c:120 #, c-format msgid "Internal error. max is %d, must be >= 0." msgstr "" -#: subset.c:149 -#, c-format -msgid "i[%d] is %d which is out of range [1,nrow=%d]" -msgstr "" - -#: subset.c:161 +#: subset.c:156 #, c-format msgid "" "Item %d of i is %d and item %d is %d. Cannot mix positives and negatives." msgstr "" -#: subset.c:171 +#: subset.c:166 #, c-format msgid "Item %d of i is %d and item %d is NA. Cannot mix negatives and NA." msgstr "" -#: subset.c:207 +#: subset.c:202 #, c-format msgid "" "Item %d of i is %d but there are only %d rows. Ignoring this and %d more " "like it out of %d." msgstr "" -#: subset.c:209 +#: subset.c:204 #, c-format msgid "" "Item %d of i is %d which removes that item but that has occurred before. " "Ignoring this dup and %d other dups." msgstr "" -#: subset.c:223 +#: subset.c:218 #, c-format msgid "Column %d is NULL; malformed data.table." msgstr "" -#: subset.c:226 +#: subset.c:221 #, c-format msgid "Column %d ['%s'] is a data.frame or data.table; malformed data.table." msgstr "" -#: subset.c:231 +#: subset.c:226 #, c-format msgid "" "Column %d ['%s'] is length %d but column 1 is length %d; malformed data." "table." msgstr "" -#: subset.c:247 +#: subset.c:258 #, c-format -msgid "Internal error. Argument 'x' to CsubsetDT is type '%s' not 'list'" +msgid "Item %d of cols is %d which is outside the range [1,ncol(x)=%d]" msgstr "" -#: subset.c:260 -#, c-format -msgid "Internal error. Argument 'cols' to Csubset is type '%s' not 'integer'" -msgstr "" - -#: subset.c:337 +#: subset.c:332 msgid "" "Internal error: NULL can not be subset. It is invalid for a data.table to " "contain a NULL column." msgstr "" -#: subset.c:339 +#: subset.c:334 msgid "" "Internal error: CsubsetVector is internal-use-only but has received " "negatives, zeros or out-of-range" @@ -4198,11 +4100,6 @@ msgstr "" msgid "Internal error: uniqlist has been passed length(order)==%d but nrow==%d" msgstr "" -#: uniqlist.c:96 uniqlist.c:127 uniqlist.c:208 uniqlist.c:245 uniqlist.c:318 -#, c-format -msgid "Type '%s' not supported" -msgstr "" - #: uniqlist.c:148 msgid "Input argument 'x' to 'uniqlengths' must be an integer vector" msgstr "" @@ -4212,13 +4109,13 @@ msgid "" "Input argument 'n' to 'uniqlengths' must be an integer vector of length 1" msgstr "" -#: uniqlist.c:167 +#: uniqlist.c:167 uniqlist.c:264 msgid "cols must be an integer vector with length >= 1" msgstr "" #: uniqlist.c:171 #, c-format -msgid "Item %d of cols is %d which is outside range of l [1,length(l)=%d]" +msgid "Item %d of cols is %d which is outside the range [1,length(l)=%d]" msgstr "" #: uniqlist.c:174 @@ -4237,79 +4134,71 @@ msgstr "" msgid "Internal error: nrows[%d]>0 but ngrps==0" msgstr "" -#: uniqlist.c:264 -msgid "cols must be an integer vector of positive length" -msgstr "" - #: uniqlist.c:349 msgid "x is not a logical vector" msgstr "" -#: utils.c:73 +#: utils.c:80 #, c-format msgid "Unsupported type '%s' passed to allNA()" msgstr "" -#: utils.c:92 +#: utils.c:99 msgid "'x' argument must be data.table compatible" msgstr "" -#: utils.c:94 +#: utils.c:101 msgid "'check_dups' argument must be TRUE or FALSE" msgstr "" -#: utils.c:110 +#: utils.c:117 msgid "" "argument specifying columns is type 'double' and one or more items in it are " "not whole integers" msgstr "" -#: utils.c:116 +#: utils.c:123 #, c-format -msgid "argument specifying columns specify non existing column(s): cols[%d]=%d" +msgid "" +"argument specifying columns received non-existing column(s): cols[%d]=%d" msgstr "" -#: utils.c:121 +#: utils.c:128 msgid "'x' argument data.table has no names" msgstr "" -#: utils.c:126 +#: utils.c:133 #, c-format msgid "" -"argument specifying columns specify non existing column(s): cols[%d]='%s'" +"argument specifying columns received non-existing column(s): cols[%d]='%s'" msgstr "" -#: utils.c:129 +#: utils.c:136 msgid "argument specifying columns must be character or numeric" msgstr "" -#: utils.c:132 -msgid "argument specifying columns specify duplicated column(s)" +#: utils.c:139 +msgid "argument specifying columns received duplicate column(s)" msgstr "" -#: utils.c:138 +#: utils.c:145 #, c-format msgid "%s: fill argument must be length 1" msgstr "" -#: utils.c:171 +#: utils.c:178 #, c-format msgid "%s: fill argument must be numeric" msgstr "" -#: utils.c:273 -#, c-format -msgid "Internal error: unsupported type '%s' passed to copyAsPlain()" -msgstr "" - -#: utils.c:277 +#: utils.c:284 #, c-format msgid "" "Internal error: type '%s' passed to copyAsPlain() but it seems " "copyMostAttrib() retains ALTREP attributes" msgstr "" -#: utils.c:312 +#: utils.c:319 #, c-format msgid "Found and copied %d column%s with a shared memory address\n" msgstr "" diff --git a/po/zh_CN.po b/po/zh_CN.po index 6a95727f07..a4eb0f96c8 100644 --- a/po/zh_CN.po +++ b/po/zh_CN.po @@ -2,7 +2,7 @@ msgid "" msgstr "" "Project-Id-Version: data.table 1.12.5\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2019-12-30 01:24+0800\n" +"POT-Creation-Date: 2020-03-12 10:56+0800\n" "PO-Revision-Date: 2019-11-18 00:26-04\n" "Last-Translator: Yuhang Chen \n" "Language-Team: Mandarin\n" @@ -37,11 +37,12 @@ msgstr "" "行了setDT(), 请报告data.table异常行为到问题跟踪器(issue tracker)\n" #: assign.c:124 -msgid "Internal error: .internal.selfref ptr is not NULL or R_NilValue" +msgid "Internal error: .internal.selfref ptr is neither NULL nor R_NilValue" msgstr "内部错误: .internal.selfref ptr不为NULL或R_NilValue" #: assign.c:126 -msgid "Internal error: .internal.selfref tag isn't NULL or a character vector" +msgid "" +"Internal error: .internal.selfref tag is neither NULL nor a character vector" msgstr "内部错误: .internal.selfref ptr不为NULL或字符向量" #: assign.c:168 @@ -130,7 +131,7 @@ msgstr "getOption('datatable.alloc')结果为长度%d的数值向量其长度应 msgid "getOption('datatable.alloc')==%d. It must be >=0 and not NA." msgstr "getOption('datatable.alloc')值为%d, 其必须大于等于零且不能为NA" -#: assign.c:239 fsort.c:109 +#: assign.c:239 fsort.c:109 openmp-utils.c:67 msgid "verbose must be TRUE or FALSE" msgstr "verbose参数必须为TRUE或FALSE" @@ -194,10 +195,10 @@ msgstr "" "整型并发出警告)。如果 i 为一个用于筛选的逻辑(logical)向量,请直接将它传给 " "which(),且如果可能的话将 which() 放置于循环之外以保持高效。" -#: assign.c:329 +#: assign.c:329 subset.c:144 #, c-format -msgid "i[%d] is %d which is out of range [1,nrow=%d]." -msgstr "i[%d] 为 %d 且超出了范围 [1,nrow=%d]。" +msgid "i[%d] is %d which is out of range [1,nrow=%d]" +msgstr "i[%d] 是 %d ,超出 [1,nrow=%d] 的范围" #: assign.c:332 #, c-format @@ -467,16 +468,27 @@ msgstr " 因为一个主列的更新,丢掉索引 '%s'\n" msgid "Shortening index '%s' to '%s' due to an update on a key column\n" msgstr "因为一个主列的更新,缩短索引 '%s' 到 '%s'\n" -#: assign.c:680 +#: assign.c:683 +#, c-format +msgid "" +"Internal error memrecycle: sourceStart=%d sourceLen=%d length(source)=%d" +msgstr "memrecycle中内部错误: sourceStart=%d sourceLen=%d length(source)=%d" + +#: assign.c:685 +#, c-format +msgid "Internal error memrecycle: start=%d len=%d length(target)=%d" +msgstr "memrecycle中内部错误: start=%d len=%d length(target)=%d" + +#: assign.c:688 #, c-format msgid "Internal error: recycle length error not caught earlier. slen=%d len=%d" msgstr "内部错误: 早期未被发现的循环长度错误 slen=%d len=%d" -#: assign.c:684 +#: assign.c:692 msgid "Internal error: memrecycle has received NULL colname" msgstr "内部错误: memrecycle 接受到的列名为 NULL " -#: assign.c:710 +#: assign.c:718 #, c-format msgid "" "Cannot assign 'factor' to '%s'. Factors can only be assigned to factor, " @@ -484,14 +496,14 @@ msgid "" msgstr "" "不能将 'factor' 赋值为 '%s' 。因子类型只能赋值为因子,字符或者列表其中的列" -#: assign.c:724 +#: assign.c:732 #, c-format msgid "" "Assigning factor numbers to column %d named '%s'. But %d is outside the " "level range [1,%d]" msgstr "将列 %d 名称为 '%s' 赋值为因子。但是 %d 在层次范围[1,%d]之外" -#: assign.c:732 +#: assign.c:740 #, c-format msgid "" "Assigning factor numbers to column %d named '%s'. But %f is outside the " @@ -500,7 +512,7 @@ msgstr "" "将列 %d 名称为 '%s' 赋值为因子。但是 %f 在层次范围[1,%d]之外,或者不是一个完" "整的数字" -#: assign.c:738 +#: assign.c:746 #, c-format msgid "" "Cannot assign '%s' to 'factor'. Factor columns can be assigned factor, " @@ -508,28 +520,28 @@ msgid "" msgstr "" "不能将 'factor' 赋值为 '%s' 。 因子列可被赋值为因子,字符 ,NA 或者 层次数值" -#: assign.c:759 +#: assign.c:767 msgid "" "Internal error: levels of target are either not unique or have truelength<0" msgstr "内部错误: 目标的层次不是唯一或者长度<0" -#: assign.c:798 +#: assign.c:806 #, c-format msgid "Unable to allocate working memory of %d bytes to combine factor levels" msgstr "不能分配 %d 字节的工作内存来组合因子层次" -#: assign.c:805 +#: assign.c:813 msgid "Internal error: extra level check sum failed" msgstr "内部错误: 额外的层次校验和失败" -#: assign.c:824 +#: assign.c:832 #, c-format msgid "" "Coercing 'character' RHS to '%s' to match the type of the target column " "(column %d named '%s')." msgstr "将'character' RHS 强制转换成 '%s' 来匹配目标列的类型(列 %d 名称 '%s')" -#: assign.c:830 +#: assign.c:838 #, c-format msgid "" "Cannot coerce 'list' RHS to 'integer64' to match the type of the target " @@ -537,40 +549,40 @@ msgid "" msgstr "" "不能将'list' RHS 强制转换成 'integer64' 来匹配目标列的类型(列 %d 名称 '%s')" -#: assign.c:835 +#: assign.c:843 #, c-format msgid "" "Coercing 'list' RHS to '%s' to match the type of the target column (column " "%d named '%s')." msgstr "将'list' RHS 强制转换成 '%s' 来匹配目标列的类型(列 %d 名称 '%s')" -#: assign.c:841 +#: assign.c:849 #, c-format msgid "Zero-copy coerce when assigning '%s' to '%s' column %d named '%s'.\n" msgstr "当 '%s' 赋值成 '%s' 列 %d 名称 '%s',进行Zero-copy强制转换。\n" -#: assign.c:936 +#: assign.c:944 #, c-format msgid "type '%s' cannot be coerced to '%s'" msgstr "类型 '%s' 不能强制转换成 '%s'" -#: assign.c:1056 +#: assign.c:1064 msgid "" "To assign integer64 to a character column, please use as.character() for " "clarity." msgstr "请使用 as.character() 把 integer64 类型的数值赋值给字符列" -#: assign.c:1068 +#: assign.c:1076 #, c-format msgid "Unsupported column type in assign.c:memrecycle '%s'" msgstr "assign.c:memrecycle '%s' 里有不支持的列的类型" -#: assign.c:1115 +#: assign.c:1123 #, c-format msgid "Internal error: writeNA passed a vector of type '%s'" msgstr "内部错误:writeNA 函数读取到了一个类型是'%s'的向量" -#: assign.c:1146 +#: assign.c:1154 #, c-format msgid "" "Internal error: savetl_init checks failed (%d %d %p %p). please report to " @@ -579,12 +591,12 @@ msgstr "" "内部错误:savetl_init的校验失败 (%d %d %p %p),请将此问题汇报给data.table 问" "题追踪器。" -#: assign.c:1154 +#: assign.c:1162 #, c-format msgid "Failed to allocate initial %d items in savetl_init" msgstr "不能为 savetl_init 最开始的 %d 个项分配空间" -#: assign.c:1163 +#: assign.c:1171 #, c-format msgid "" "Internal error: reached maximum %d items for savetl. Please report to data." @@ -593,58 +605,40 @@ msgstr "" "内部错误:已经达到了 savetl 能处理的子项上限 %d。请将此问题汇报给data.table问" "题追踪器。" -#: assign.c:1170 +#: assign.c:1178 #, c-format msgid "Failed to realloc saveds to %d items in savetl" msgstr "不能给 savetl 里的 %d 个项重新分配 saveds" -#: assign.c:1176 +#: assign.c:1184 #, c-format msgid "Failed to realloc savedtl to %d items in savetl" msgstr "不能给savetl里的 %d 个项提供 savetl" -#: assign.c:1199 +#: assign.c:1207 msgid "x must be a character vector" msgstr "x 必须是一个字符向量" -#: assign.c:1200 +#: assign.c:1208 msgid "'which' must be an integer vector" msgstr "'which' 必须是一个整数向量" -#: assign.c:1201 +#: assign.c:1209 msgid "'new' must be a character vector" msgstr "'new' 必须是一个字符向量" -#: assign.c:1202 +#: assign.c:1210 #, c-format msgid "'new' is length %d. Should be the same as length of 'which' (%d)" msgstr "'new' 的长度是 %d。 它的长度必须和'which' (%d)的长度一致。" -#: assign.c:1205 +#: assign.c:1213 #, c-format msgid "" "Item %d of 'which' is %d which is outside range of the length %d character " "vector" msgstr "'which' 的 %d 项是 %d,这超出了 %d 字符的长度范围" -#: assign.c:1215 -msgid "dt passed to setcolorder has no names" -msgstr "setcolorder读取到的dt并没有名字" - -#: assign.c:1217 -#, c-format -msgid "Internal error: dt passed to setcolorder has %d columns but %d names" -msgstr "内部错误: setcolorder读取到的dt有 %d 列但是有 %d 个名字。" - -#: assign.c:1224 -msgid "" -"Internal error: o passed to Csetcolorder contains an NA or out-of-bounds" -msgstr "内部错误: Csetcolorder读取到的o有一个NA(缺失值)或者是下标出界" - -#: assign.c:1226 -msgid "Internal error: o passed to Csetcolorder contains a duplicate" -msgstr "内部错误: Csetcolorder读取到的o含有一个重复值" - #: between.c:12 #, c-format msgid "" @@ -824,28 +818,33 @@ msgstr "%s 类型的列仅支持 '==' 操作符。" #: bmerge.c:410 #, c-format -msgid "Type '%s' not supported for joining/merging" +msgid "Type '%s' is not supported for joining/merging" msgstr "'%s' 类型不支持联结/归并" #: bmerge.c:468 msgid "Internal error: xlow!=xupp-1 || xlowxuppIn" msgstr "内部错误:xlow!=xupp-1 或 xlowxuppIn" -#: chmatch.c:4 -#, c-format -msgid "x is type '%s' (must be 'character' or NULL)" -msgstr "x 类型为 '%s' (必须为'character'或 NULL)" - #: chmatch.c:5 #, c-format msgid "table is type '%s' (must be 'character' or NULL)" msgstr "table 类型为 '%s' (必须为 'character' 或 NULL)" -#: chmatch.c:6 +#: chmatch.c:7 msgid "Internal error: either chin or chmatchdup should be true not both" msgstr "内部错误:chin 和 chmatchdup 不能同时为真" -#: chmatch.c:44 +#: chmatch.c:12 +#, c-format +msgid "Internal error: length of SYMSXP is %d not 1" +msgstr "内部错误: SYMSXP的长度是 %d, 应该是 1" + +#: chmatch.c:19 +#, c-format +msgid "x is type '%s' (must be 'character' or NULL)" +msgstr "x 类型为 '%s' (必须为'character'或 NULL)" + +#: chmatch.c:66 #, c-format msgid "" "Internal error: CHARSXP '%s' has a negative truelength (%d). Please file an " @@ -854,7 +853,7 @@ msgstr "" "内部错误:CHARSXP '%s' 的 truelength (%d) 为负。请将此问题汇报给 data.table " "问题追踪器。" -#: chmatch.c:73 +#: chmatch.c:95 #, c-format msgid "" "Failed to allocate % bytes working memory in chmatchdup: " @@ -865,7 +864,7 @@ msgstr "" #: cj.c:89 #, c-format -msgid "Type '%s' not supported by CJ." +msgid "Type '%s' is not supported by CJ." msgstr "CJ 不支持 '%s' 类型" #: coalesce.c:5 @@ -931,36 +930,37 @@ msgstr "" msgid "coalesce copied first item (inplace=FALSE)\n" msgstr "coalesce 复制了第一项 (inplace=FALSE)\n" -#: coalesce.c:166 +#: coalesce.c:166 fifelse.c:138 fifelse.c:337 shift.c:157 uniqlist.c:96 +#: uniqlist.c:127 uniqlist.c:208 uniqlist.c:245 uniqlist.c:318 #, c-format -msgid "Unsupported type: %s" -msgstr "不支持的类型:%s" +msgid "Type '%s' is not supported" +msgstr "不支持类型 '%s'" -#: dogroups.c:14 +#: dogroups.c:15 msgid "Internal error: order not integer vector" msgstr "内部错误:order 不是整型向量" -#: dogroups.c:15 +#: dogroups.c:16 msgid "Internal error: starts not integer" msgstr "内部错误:starts 不是整型" -#: dogroups.c:16 +#: dogroups.c:17 msgid "Internal error: lens not integer" msgstr "内部错误:lens 不是整型" -#: dogroups.c:18 +#: dogroups.c:19 msgid "Internal error: jiscols not NULL but o__ has length" msgstr "内部错误:jiscols 非 NULL,但 o__ 长度不为0" -#: dogroups.c:19 +#: dogroups.c:20 msgid "Internal error: xjiscols not NULL but o__ has length" msgstr "内部错误:jiscols 非 NULL,但 o__ 长度不为0" -#: dogroups.c:20 +#: dogroups.c:21 msgid "'env' should be an environment" msgstr "'env' 应该是一个环境" -#: dogroups.c:39 +#: dogroups.c:40 #, c-format msgid "" "Internal error: unsupported size-0 type '%s' in column %d of 'by' should " @@ -968,16 +968,16 @@ msgid "" msgstr "" "内部错误:未能被提前捕获到 'by' 中第 %2$d 列不支持类型 '%1$s' 且size-0 的问题" -#: dogroups.c:43 +#: dogroups.c:44 #, c-format msgid "!length(bynames)[%d]==length(groups)[%d]==length(grpcols)[%d]" msgstr "!length(bynames)[%d]==length(groups)[%d]==length(grpcols)[%d]" -#: dogroups.c:62 +#: dogroups.c:63 msgid "row.names attribute of .SD not found" msgstr ".SD 的行名属性不存在" -#: dogroups.c:64 +#: dogroups.c:65 #, c-format msgid "" "row.names of .SD isn't integer length 2 with NA as first item; i.e., ." @@ -986,47 +986,43 @@ msgstr "" ".SD 的行名不是长度为2且首个元素为 NA 的整型;例如:set_row_names(). [%s %d " "%d]" -#: dogroups.c:69 +#: dogroups.c:70 msgid "length(names)!=length(SD)" msgstr "length(names)!=length(SD)" -#: dogroups.c:73 +#: dogroups.c:74 #, c-format msgid "" "Internal error: size-0 type %d in .SD column %d should have been caught " "earlier" msgstr "内部错误:未能提前捕获到 .SD 中第 %2$d 列类型 %1$d size-0 的问题" -#: dogroups.c:83 +#: dogroups.c:84 msgid "length(xknames)!=length(xSD)" msgstr "length(xknames)!=length(xSD)" -#: dogroups.c:87 +#: dogroups.c:88 #, c-format msgid "" "Internal error: type %d in .xSD column %d should have been caught by now" msgstr "内部错误:当前未能捕获到 .xSD 中第 %2$d 列类型 %1$d 的问题" -#: dogroups.c:91 +#: dogroups.c:92 #, c-format msgid "length(iSD)[%d] != length(jiscols)[%d]" msgstr "length(iSD)[%d] != length(jiscols)[%d]" -#: dogroups.c:92 +#: dogroups.c:93 #, c-format msgid "length(xSD)[%d] != length(xjiscols)[%d]" msgstr "length(xSD)[%d] != length(xjiscols)[%d]" -#: dogroups.c:155 dogroups.c:184 -msgid "Internal error. Type of column should have been checked by now" -msgstr "内部错误:至此列的类型应已经被检查完成" - -#: dogroups.c:273 +#: dogroups.c:198 #, c-format msgid "j evaluates to type '%s'. Must evaluate to atomic vector or list." msgstr "j的运算结果为'%s'类型。其运算结果必须为原子向量或列表。" -#: dogroups.c:281 +#: dogroups.c:206 msgid "" "All items in j=list(...) should be atomic vectors or lists. If you are " "trying something like j=list(.SD,newcol=mean(colA)) then use := by group " @@ -1036,13 +1032,13 @@ msgstr "" "newcol=mean(colA)) 之类的操作请使用 := by group 代替(更快速),或事后使用 " "cbind()、merge()" -#: dogroups.c:290 +#: dogroups.c:215 msgid "" "RHS of := is NULL during grouped assignment, but it's not possible to delete " "parts of a column." msgstr "用 := 分组时 RHS 为 NULL但無法刪除部分列" -#: dogroups.c:294 +#: dogroups.c:219 #, c-format msgid "" "Supplied %d items to be assigned to group %d of size %d in column '%s'. The " @@ -1054,7 +1050,7 @@ msgstr "" "须是 1(可以是单个值) 或完全符合 LHS 的长度如果您想回收(recycle) RHS,请使用 " "rep() 向你的代码读者明确表达你的意图" -#: dogroups.c:305 +#: dogroups.c:230 msgid "" "Internal error: Trying to add new column by reference but tl is full; " "setalloccol should have run first at R level before getting to this point in " @@ -1063,16 +1059,16 @@ msgstr "" "内部错误 : 尝试依照引用增加新列但 tl 已满在进入 dogroups 之前,setalloccol 应" "该先在 R 运行" -#: dogroups.c:320 +#: dogroups.c:245 #, c-format msgid "Group %d column '%s': %s" msgstr "列 '%2$s' 第 %1$d 组 : %3$s" -#: dogroups.c:327 +#: dogroups.c:252 msgid "j doesn't evaluate to the same number of columns for each group" msgstr "j 估算出的每组的列数不同" -#: dogroups.c:361 +#: dogroups.c:286 #, c-format msgid "" "Column %d of j's result for the first group is NULL. We rely on the column " @@ -1086,7 +1082,7 @@ msgstr "" "(需要一致性)空 (NULL) 列可以出现在后面的组(适当的以 NA 取代并回收)但不能是第 " "1 组请输入空向量代替,例如 integer() 或 numeric()" -#: dogroups.c:364 +#: dogroups.c:289 msgid "" "j appears to be a named vector. The same names will likely be created over " "and over again for each group and slow things down. Try and pass a named " @@ -1095,7 +1091,7 @@ msgstr "" "j 是名称向量,这可能使相同的名称不停重复创建导致速度变慢请尝试输入名称列表(较" "适合 data.table)或是非名称列表代替\n" -#: dogroups.c:366 +#: dogroups.c:291 #, c-format msgid "" "Column %d of j is a named vector (each item down the rows is named, " @@ -1105,7 +1101,7 @@ msgstr "" "j 的第 %d 列是名称向量(整行的项都是名称)为了效率请移除这些名称(避免在每组重复" "创建这些名称)总之他们被忽略了\n" -#: dogroups.c:374 +#: dogroups.c:299 msgid "" "The result of j is a named list. It's very inefficient to create the same " "names over and over again for each group. When j=list(...), any names are " @@ -1117,17 +1113,17 @@ msgstr "" "j=list(...) 时侦测到的所有名称会被移出,待分组完成后再放回来可以使用 " "j=transform() 避免这种加速此讯息可能会在未来升级为警告\n" -#: dogroups.c:386 +#: dogroups.c:311 #, c-format msgid "dogroups: growing from %d to %d rows\n" msgstr "dogroups: 从 %d 列增加至 %d 列\n" -#: dogroups.c:387 +#: dogroups.c:312 #, c-format msgid "dogroups: length(ans)[%d]!=ngrpcols[%d]+njval[%d]" msgstr "dogroups: length(ans)[%d]!=ngrpcols[%d]+njval[%d]" -#: dogroups.c:420 +#: dogroups.c:330 #, c-format msgid "" "Item %d of j's result for group %d is zero length. This will be filled with " @@ -1138,7 +1134,7 @@ msgstr "" "j 的结果第 %d 项在第 %d 组中为零长度(zero length)将使用 %d 个 NA 填入以符合结" "果中最长列的长度后面的分组也有相同问题,但只回报第一组以避免过多警告" -#: dogroups.c:427 +#: dogroups.c:337 #, c-format msgid "" "Column %d of result for group %d is type '%s' but expecting type '%s'. " @@ -1147,7 +1143,7 @@ msgstr "" "结果的第 %d 列在第 %d 组中是 '%s' 类别而非预期的 '%s' 类别所有组的列类别必须" "一致" -#: dogroups.c:429 +#: dogroups.c:339 #, c-format msgid "" "Supplied %d items for column %d of group %d which has %d rows. The RHS " @@ -1159,17 +1155,17 @@ msgstr "" "單個值) 或與 LHS 長度完全匹配如果您想回收(recycle) RHS,请使用 rep() 向你的代" "码读者明确表达你的意图" -#: dogroups.c:444 +#: dogroups.c:354 #, c-format msgid "Wrote less rows (%d) than allocated (%d).\n" msgstr "写入的行 (%d) 少于分配的 (%d)\n" -#: dogroups.c:454 +#: dogroups.c:364 #, c-format msgid "Internal error: block 0 [%d] and block 1 [%d] have both run" msgstr "内部错误 : 区块 0 [%d] 与区块 1 [%d] 都运行了" -#: dogroups.c:456 +#: dogroups.c:366 #, c-format msgid "" "\n" @@ -1178,18 +1174,23 @@ msgstr "" "\n" " %s 花了 %.3fs 在 %d 个组\n" -#: dogroups.c:458 +#: dogroups.c:368 #, c-format msgid " eval(j) took %.3fs for %d calls\n" msgstr " eval(j)取%.3fs给 %d 调用\n" -#: dogroups.c:482 +#: dogroups.c:392 msgid "growVector passed NULL" msgstr "growVector通过NULL" +#: dogroups.c:412 +#, c-format +msgid "Internal error: growVector doesn't support type '%s'" +msgstr "内部错误:growVector 不支持类型 '%s'" + #: fastmean.c:39 msgid "narm should be TRUE or FALSE" -msgstr "narm必须是TRUE或FALSE" +msgstr "narm 必须是 TRUE 或 FALSE" #: fastmean.c:45 #, c-format @@ -1201,7 +1202,7 @@ msgstr "传递给 fastmean 的是 %s 类型,而不是数值或逻辑类型" msgid "Internal error: type '%s' not caught earlier in fastmean" msgstr "内部错误:先前fastmean没有侦测到类型 '%s' " -#: fcast.c:80 +#: fcast.c:78 #, c-format msgid "Unsupported column type in fcast val: '%s'" msgstr "fcast val不支持的列类型:'%s'" @@ -1210,61 +1211,64 @@ msgstr "fcast val不支持的列类型:'%s'" msgid "Argument 'test' must be logical." msgstr "参数'test'必须是逻辑类型。" -#: fifelse.c:23 +#: fifelse.c:28 #, c-format msgid "" "'yes' is of type %s but 'no' is of type %s. Please make sure that both " "arguments have the same type." msgstr "'yes'是%s类型,但'no'是%s类型。请确认两个参数是同一类型。" -#: fifelse.c:28 +#: fifelse.c:33 msgid "" "'yes' has different class than 'no'. Please make sure that both arguments " "have the same class." msgstr "'yes'的类型与'no'不同。请确认两个参数是同一类型。" -#: fifelse.c:33 +#: fifelse.c:38 msgid "'yes' and 'no' are both type factor but their levels are different." msgstr "'yes'和'no'都是因子类型但他们的因子水平不同。" -#: fifelse.c:38 +#: fifelse.c:43 #, c-format msgid "" "Length of 'yes' is % but must be 1 or length of 'test' (%)." msgstr "'yes'长度是%但长度必须是1或者等于'test'的长度 (%)。" -#: fifelse.c:40 +#: fifelse.c:45 #, c-format msgid "" "Length of 'no' is % but must be 1 or length of 'test' (%)." msgstr "'no'长度是%但长度必须是1或者等于'test'的长度 (%)。" -#: fifelse.c:51 +#: fifelse.c:56 #, c-format msgid "Length of 'na' is % but must be 1" msgstr "'na'长度是%但必须是长度必须是1" -#: fifelse.c:57 +#: fifelse.c:62 #, c-format msgid "" "'yes' is of type %s but 'na' is of type %s. Please make sure that both " "arguments have the same type." msgstr "'yes'是%s类型,但'na'是%s类型。请确认两个参数是同一类型。" -#: fifelse.c:59 +#: fifelse.c:64 msgid "" "'yes' has different class than 'na'. Please make sure that both arguments " "have the same class." msgstr "'yes'的类型与'na'不同。请确认两个参数是同一类型。" -#: fifelse.c:63 +#: fifelse.c:68 msgid "'yes' and 'na' are both type factor but their levels are different." msgstr "'yes'和'na'都是因子类型但他们的因子水平不同" -#: fifelse.c:133 +#: fifelse.c:152 #, c-format -msgid "Type %s is not supported." -msgstr "不支持类型 %s" +msgid "" +"Received %d inputs; please supply an even number of arguments in ..., " +"consisting of logical condition, resulting value pairs (in that order). Note " +"that the default argument must be named explicitly, e.g., default=0" +msgstr "" #: fmelt.c:18 msgid "'x' must be an integer" @@ -1374,7 +1378,7 @@ msgstr "" "1的字符/整数向量" #: fmelt.c:280 -msgid "'variable.name' must be a character/integer vector of length=1." +msgid "'variable.name' must be a character/integer vector of length 1." msgstr "'variable.name' 必须是长度1的字符/整数向量。" #: fmelt.c:329 @@ -1686,34 +1690,30 @@ msgstr "nrow==%d 但是必须 >=0" msgid "x must be type 'double'" msgstr "x 必须为浮点数类型" -#: frank.c:11 +#: frank.c:9 frank.c:10 frank.c:150 frank.c:151 subset.c:92 subset.c:242 +#: subset.c:255 #, c-format -msgid "Internal error. Argument 'x' to Cdt_na is type '%s' not 'list'" -msgstr "内部错误:参数 'x' 关于 Cdt_na 是 '%s' 类型而不是 'list' 类型" +msgid "Internal error. Argument '%s' to %s is type '%s' not '%s'" +msgstr "内部错误:参数 '%s' 关于 '%s' 是 '%s' 类型而不是 '%s' 类型" -#: frank.c:12 -#, c-format -msgid "Internal error. Argument 'cols' to Cdt_na is type '%s' not 'integer'" -msgstr "内部错误:参数 'cols' 关于 Cdt_na 是 '%s' 类型而不是 'integer' 类型" - -#: frank.c:16 frank.c:146 subset.c:263 +#: frank.c:14 frank.c:155 #, c-format msgid "Item %d of 'cols' is %d which is outside 1-based range [1,ncol(x)=%d]" msgstr "'cols' 的 %d 项为 %d ,超出1的范围 [1,ncol(x)=%d]" -#: frank.c:26 frank.c:155 +#: frank.c:24 frank.c:164 #, c-format msgid "" "Column %d of input list x is length %d, inconsistent with first column of " "that item which is length %d." msgstr "输入列表x的列 %d 长度为 %d,不同于第一列的该项长度为 %d" -#: frank.c:65 frank.c:202 transpose.c:88 +#: frank.c:63 frank.c:211 transpose.c:88 #, c-format msgid "Unsupported column type '%s'" msgstr "不支持的列类型 '%s'" -#: frank.c:83 +#: frank.c:82 msgid "" "Internal error: invalid ties.method for frankv(), should have been caught " "before. please report to data.table issue tracker" @@ -1721,21 +1721,11 @@ msgstr "" "内部错误:对于 frankv()的无效值ties.method,应在之前被捕获。请报告给 data." "table issue tracker" -#: frank.c:130 +#: frank.c:139 #, c-format msgid "Internal error: unknown ties value in frank: %d" msgstr "内部错误:frank中有未知的ties值 %d" -#: frank.c:141 -#, c-format -msgid "Internal error. Argument 'x' to CanyNA is type '%s' not 'list'" -msgstr "内部错误:参数 'x' 关于 CanyNA 是 '%s' 类型而不是'list'类型" - -#: frank.c:142 -#, c-format -msgid "Internal error. Argument 'cols' to CanyNA is type '%s' not 'integer'" -msgstr "内部错误:参数 'cols' 关于 CanyNA 是 '%s' 类型而不是'integer'类型" - #: fread.c:104 #, c-format msgid "" @@ -1772,217 +1762,217 @@ msgstr "可避免的 %.3f 秒。 %s 复制用时\n" msgid " File copy in RAM took %.3f seconds.\n" msgstr "内存上的文件复制耗时 %.3f 秒\n" -#: fread.c:1093 +#: fread.c:1105 msgid "" "Previous fread() session was not cleaned up properly. Cleaned up ok at the " "beginning of this fread() call.\n" msgstr "之前的会话fread()未正确清理。在当前 fread() 会话开始前清理好\n" -#: fread.c:1096 +#: fread.c:1108 msgid "[01] Check arguments\n" msgstr "[01] 参数检查\n" -#: fread.c:1103 +#: fread.c:1115 #, c-format msgid " Using %d threads (omp_get_max_threads()=%d, nth=%d)\n" msgstr "使用 %d 线程 (omp_get_max_threads()=%d, nth=%d)\n" -#: fread.c:1111 +#: fread.c:1123 msgid "" "Internal error: NAstrings is itself NULL. When empty it should be pointer to " "NULL." msgstr "内部错误:NAstrings 自身为空值。当清空该项会指向NULL空值" -#: fread.c:1129 +#: fread.c:1141 #, c-format msgid "freadMain: NAstring <<%s>> has whitespace at the beginning or end" msgstr "freadMain: NAstring <<%s>> 在开始或者结束处有空白" -#: fread.c:1134 +#: fread.c:1146 #, c-format msgid "" "freadMain: NAstring <<%s>> is recognized as type boolean, this is not " "permitted." msgstr "freadMain: NAstring <<%s>> 被识别为布尔型,这是不允许" -#: fread.c:1144 +#: fread.c:1156 msgid " No NAstrings provided.\n" msgstr "未提供 NAstrings \n" -#: fread.c:1146 +#: fread.c:1158 msgid " NAstrings = [" msgstr " NAstrings = [" -#: fread.c:1149 +#: fread.c:1161 msgid "]\n" msgstr "]\n" -#: fread.c:1151 +#: fread.c:1163 msgid " One or more of the NAstrings looks like a number.\n" msgstr "一个或多个 NAstrings 类似数值\n" -#: fread.c:1153 +#: fread.c:1165 msgid " None of the NAstrings look like numbers.\n" msgstr "没有 NAstrings 为数值\n" -#: fread.c:1155 +#: fread.c:1167 #, c-format msgid " skip num lines = %\n" msgstr "跳过行数为 %\n" -#: fread.c:1156 +#: fread.c:1168 #, c-format msgid " skip to string = <<%s>>\n" msgstr "跳转至 string = <<%s>>\n" -#: fread.c:1157 +#: fread.c:1169 #, c-format msgid " show progress = %d\n" msgstr "显示进程 %d\n" -#: fread.c:1158 +#: fread.c:1170 #, c-format msgid " 0/1 column will be read as %s\n" msgstr " 0/1 列被读取为 %s\n" -#: fread.c:1166 +#: fread.c:1178 #, c-format msgid "sep == quote ('%c') is not allowed" msgstr "sep == quote ('%c') 不被允许" -#: fread.c:1167 +#: fread.c:1179 msgid "dec='' not allowed. Should be '.' or ','" msgstr "dec='' 不允许,应该为 '.' 或者 ','" -#: fread.c:1168 +#: fread.c:1180 #, c-format msgid "sep == dec ('%c') is not allowed" msgstr "sep == dec ('%c') 不允许" -#: fread.c:1169 +#: fread.c:1181 #, c-format msgid "quote == dec ('%c') is not allowed" msgstr "quote == dec ('%c') 不允许" -#: fread.c:1186 +#: fread.c:1198 msgid "[02] Opening the file\n" msgstr "[02] 打开文件\n" -#: fread.c:1189 +#: fread.c:1201 msgid "" " `input` argument is provided rather than a file name, interpreting as raw " "text to read\n" msgstr "提供 `input` 参数而非文件名,理解为原始的文本读取\n" -#: fread.c:1193 +#: fread.c:1205 msgid "Internal error: last byte of character input isn't \\0" msgstr "内部错误:字符输入的最后一个字节不是 \\0" -#: fread.c:1196 +#: fread.c:1208 #, c-format msgid " Opening file %s\n" msgstr "打开文件 %s\n" -#: fread.c:1200 +#: fread.c:1212 #, c-format msgid "file not found: %s" msgstr "文件未找到: %s" -#: fread.c:1204 +#: fread.c:1216 #, c-format msgid "Opened file ok but couldn't obtain its size: %s" msgstr "文件能够打开但无法获知其大小:%s" -#: fread.c:1207 fread.c:1235 +#: fread.c:1219 fread.c:1247 #, c-format msgid "File is empty: %s" msgstr "文件是空的:%s" -#: fread.c:1208 fread.c:1236 +#: fread.c:1220 fread.c:1248 #, c-format msgid " File opened, size = %s.\n" msgstr "文件已打开,大小为 %s.\n" -#: fread.c:1225 +#: fread.c:1237 #, c-format msgid "File not found: %s" msgstr "文件没有找到:%s" -#: fread.c:1231 +#: fread.c:1243 #, c-format msgid "Unable to open file after %d attempts (error %d): %s" msgstr "经过 %d 次尝试后仍无法打开文件(错误 %d):%s" -#: fread.c:1233 +#: fread.c:1245 #, c-format msgid "GetFileSizeEx failed (returned 0) on file: %s" msgstr "GetFileSizeEx 未能成功执行(返回值为0)于文件:%s" -#: fread.c:1238 +#: fread.c:1250 #, c-format msgid "This is Windows, CreateFileMapping returned error %d for file %s" msgstr "现在在Windows下,CreateFileMapping 返回错误 %d 于文件 %s" -#: fread.c:1245 +#: fread.c:1257 #, c-format msgid "" "Opened %s file ok but could not memory map it. This is a %dbit process. %s." msgstr "能够打开文件 %s 但不能创建内存映射。这是一个 %d 位进程。 %s." -#: fread.c:1246 +#: fread.c:1258 msgid "Please upgrade to 64bit" msgstr "请升级到64位" -#: fread.c:1246 +#: fread.c:1258 msgid "There is probably not enough contiguous virtual memory available" msgstr "多半没有足够的连续虚拟内存" -#: fread.c:1249 +#: fread.c:1261 msgid " Memory mapped ok\n" msgstr " 内存映射正常\n" -#: fread.c:1251 +#: fread.c:1263 msgid "" "Internal error: Neither `input` nor `filename` are given, nothing to read." msgstr "" "内部错误:既没有`input`(输入)也没有`filename`(文件名),没有什么可供读入。" -#: fread.c:1268 +#: fread.c:1280 msgid "[03] Detect and skip BOM\n" msgstr "[03] 检测并跳过字节顺序标记(BOM)\n" -#: fread.c:1272 +#: fread.c:1284 msgid "" " UTF-8 byte order mark EF BB BF found at the start of the file and " "skipped.\n" msgstr "在文件头发现了UTF-8 字节顺序标记(BOM)EF BB BF 并已跳过。\n" -#: fread.c:1277 +#: fread.c:1289 msgid "" "GB-18030 encoding detected, however fread() is unable to decode it. Some " "character fields may be garbled.\n" msgstr "检测到GB-18030 编码,但fread() 未能解码。某些 字符字段可能有乱码。\n" -#: fread.c:1280 +#: fread.c:1292 msgid "" "File is encoded in UTF-16, this encoding is not supported by fread(). Please " "recode the file to UTF-8." msgstr "文件编码是UTF-16,fread()不支持此编码。请 将文件转换为UTF-8。" -#: fread.c:1285 +#: fread.c:1297 #, c-format msgid " Last byte(s) of input found to be %s and removed.\n" msgstr " 发现输入的最后字节是 %s 并已去除。\n" -#: fread.c:1288 +#: fread.c:1300 msgid "Input is empty or only contains BOM or terminal control characters" msgstr "输入是空的或只有字节顺序标记(BOM)或终端控制字符" -#: fread.c:1295 +#: fread.c:1307 msgid "[04] Arrange mmap to be \\0 terminated\n" msgstr "[04] 设定mmap为 \\0 终止\n" -#: fread.c:1302 +#: fread.c:1314 msgid "" " No \\n exists in the file at all, so single \\r (if any) will be taken as " "one line ending. This is unusual but will happen normally when there is no " @@ -1991,7 +1981,7 @@ msgstr "" " 文件中完全没有换行符\\n,所以单个 \\r(如果有的话)将被当成一行的结束。这不" "太常见但如果没有\\r 的话属于正常;例如单个行没有行尾结束符。\n" -#: fread.c:1303 +#: fread.c:1315 msgid "" " \\n has been found in the input and different lines can end with different " "line endings (e.g. mixed \\n and \\r\\n in one file). This is common and " @@ -2000,7 +1990,7 @@ msgstr "" " 输入中有\\n 并且不同行可以有不同的 行尾结束符(如在一个文件中混合使用 \\n " "和\\r\\n)。这很常见也是理想情况。\n" -#: fread.c:1327 +#: fread.c:1339 #, c-format msgid "" " File ends abruptly with '%c'. Final end-of-line is missing. Using cow page " @@ -2009,7 +1999,7 @@ msgstr "" " 文件突然中止于 '%c'。没有最后一个行尾结束符。正使用写时复制页(cow, copy-" "on-write)写入 0 到最后一个字节。\n" -#: fread.c:1333 +#: fread.c:1345 msgid "" "This file is very unusual: it ends abruptly without a final newline, and " "also its size is a multiple of 4096 bytes. Please properly end the last row " @@ -2018,16 +2008,16 @@ msgstr "" "这个文件非常不正常:它突然中止而没有最后的换行,并且其大小是4096 字节的整数" "倍。请用一个换行(例如 'echo >> file')来恰当地结束最后一行以避免此错误" -#: fread.c:1334 +#: fread.c:1346 #, c-format msgid " File ends abruptly with '%c'. Copying file in RAM. %s copy.\n" msgstr " 文件突然中止于 '%c'。正在从内存中复制文件。%s 复制。\n" -#: fread.c:1368 +#: fread.c:1380 msgid "[05] Skipping initial rows if needed\n" msgstr "[05] 如需要的话跳过起始行\n" -#: fread.c:1374 +#: fread.c:1386 #, c-format msgid "" "skip='%s' not found in input (it is case sensitive and literal; i.e., no " @@ -2036,79 +2026,79 @@ msgstr "" "在输入中没有发现 skip='%s' (这里大小写敏感并需要是字面形式,也就是说不能使用" "模式,适配符或正则表达式)" -#: fread.c:1380 +#: fread.c:1392 #, c-format msgid "" "Found skip='%s' on line %. Taking this to be header row or first row " "of data.\n" msgstr "在行 %2$ 发现了 skip='%1$s'。将此当做表头或数据的第一行。\n" -#: fread.c:1393 +#: fread.c:1405 #, c-format msgid " Skipped to line % in the file" msgstr " 跳到文件的第 % 行" -#: fread.c:1394 +#: fread.c:1406 #, c-format msgid "skip=% but the input only has % line%s" msgstr "skip=% 但输入只有 % 行 %s" -#: fread.c:1403 +#: fread.c:1415 msgid "" "Input is either empty, fully whitespace, or skip has been set after the last " "non-whitespace." msgstr "输入是空,或全部为空白,或跳过设置是在最后一个非空白字符之后。" -#: fread.c:1405 +#: fread.c:1417 #, c-format msgid " Moved forward to first non-blank line (%d)\n" msgstr " 前移到第一个非空行 (%d)\n" -#: fread.c:1406 +#: fread.c:1418 #, c-format msgid " Positioned on line %d starting: <<%s>>\n" msgstr " 定位到行 %d 开始于: <<%s>>\n" -#: fread.c:1424 +#: fread.c:1436 msgid "[06] Detect separator, quoting rule, and ncolumns\n" msgstr "[06] 检测分隔符,引用规则,以及列数\n" -#: fread.c:1428 +#: fread.c:1440 msgid " sep='\\n' passed in meaning read lines as single character column\n" msgstr " sep='\\n' 设定意味着将把所有行读作一个字符列\n" -#: fread.c:1447 +#: fread.c:1459 msgid " Detecting sep automatically ...\n" msgstr " 自动检测分隔符中 ...\n" -#: fread.c:1454 +#: fread.c:1466 #, c-format msgid " Using supplied sep '%s'\n" msgstr " 使用提供的分隔符 '%s'\n" -#: fread.c:1488 +#: fread.c:1500 #, c-format msgid " with %d fields using quote rule %d\n" msgstr " 对 %d 个字段使用引用规则 %d\n" -#: fread.c:1538 +#: fread.c:1550 #, c-format msgid " with %d lines of %d fields using quote rule %d\n" msgstr " 对 %d 行的 %d 字段使用引用规则 %d\n" -#: fread.c:1545 +#: fread.c:1557 msgid "" " No sep and quote rule found a block of 2x2 or greater. Single column " "input.\n" msgstr " 没有分隔符并且引用规则发现了一个大于或等于2x2的区块。输入是单列。\n" -#: fread.c:1561 +#: fread.c:1573 msgid "" "Single column input contains invalid quotes. Self healing only effective " "when ncol>1" msgstr "单列输入包含了不合法的引用。自我修正只有在列数大于1(ncol>1)时才有效" -#: fread.c:1566 +#: fread.c:1578 #, c-format msgid "" "Found and resolved improper quoting in first %d rows. If the fields are not " @@ -2118,35 +2108,35 @@ msgstr "" "在前 %d 行中发现并修正了不合适的引号用法。如果字段没有加引号(例如字段间隔符" "没有在任何字段内出现),可以尝试使用 quote=\"\" 来避免此警告。" -#: fread.c:1582 +#: fread.c:1594 #, c-format msgid "" "Internal error: ncol==%d line==%d after detecting sep, ncol and first line" msgstr "内部错误:检测分隔符,列数和首行后,ncol==%d line==%d" -#: fread.c:1585 +#: fread.c:1597 #, c-format msgid "Internal error: first line has field count %d but expecting %d" msgstr "内部错误:首行有%d个字段,但应该有%d个" -#: fread.c:1587 +#: fread.c:1599 #, c-format msgid "" " Detected %d columns on line %d. This line is either column names or first " "data row. Line starts as: <<%s>>\n" msgstr "检测到第%2$d行有%1$d列。该行为列名或数据集首行。该行以<<%3$s>>开始\n" -#: fread.c:1589 +#: fread.c:1601 #, c-format msgid " Quote rule picked = %d\n" msgstr "标点符号规则 = %d\n" -#: fread.c:1590 +#: fread.c:1602 #, c-format msgid " fill=%s and the most number of columns found is %d\n" msgstr "fill=%s 且找到的最大列数为 %d\n" -#: fread.c:1596 +#: fread.c:1608 msgid "" "This file is very unusual: it's one single column, ends with 2 or more end-" "of-line (representing several NA at the end), and is a multiple of 4096, too." @@ -2154,12 +2144,12 @@ msgstr "" "该文件极为特殊,仅有一列数据,在结尾处包含多个行结束标记(表示多个空值),且" "长度为4096的整数倍。" -#: fread.c:1597 +#: fread.c:1609 #, c-format msgid " Copying file in RAM. %s\n" msgstr "正在将文件拷贝到RAM。%s\n" -#: fread.c:1603 +#: fread.c:1615 msgid "" " 1-column file ends with 2 or more end-of-line. Restoring last eol using " "extra byte in cow page.\n" @@ -2167,37 +2157,37 @@ msgstr "" "该文件包含一列数据,存在多个行结束标记(表示多个空值)。正在使用写时复制页" "(cow, copy-on-write)额外的字节恢复最后一个标记.\n" -#: fread.c:1622 +#: fread.c:1634 msgid "" "[07] Detect column types, good nrow estimate and whether first row is column " "names\n" msgstr "[07] 检测列类型,估计行数以及首行是否为列名\n" -#: fread.c:1623 +#: fread.c:1635 #, c-format msgid " 'header' changed by user from 'auto' to %s\n" msgstr " 用户已将'header'(列名)从 'auto' 改为 %s\n" -#: fread.c:1627 +#: fread.c:1639 #, c-format msgid "Failed to allocate 2 x %d bytes for type and tmpType: %s" msgstr "为 %2$s 类型分配 2 x %1$d bytes失败" -#: fread.c:1648 +#: fread.c:1660 #, c-format msgid " Number of sampling jump points = %d because " msgstr "采样跳点数 = %d 因为" -#: fread.c:1649 +#: fread.c:1661 #, c-format msgid "nrow limit (%) supplied\n" msgstr "指定了nrow 的最大值 (%) \n" -#: fread.c:1650 +#: fread.c:1662 msgid "jump0size==0\n" msgstr "jump0size==0\n" -#: fread.c:1651 +#: fread.c:1663 #, c-format msgid "" "(% bytes from row 1 to eof) / (2 * % jump0size) == " @@ -2205,32 +2195,32 @@ msgid "" msgstr "" "(从首行到结束共 % bytes) / (2 * % jump0size) == %\n" -#: fread.c:1689 +#: fread.c:1701 #, c-format msgid "" " A line with too-%s fields (%d/%d) was found on line %d of sample jump %d. " "%s\n" msgstr "第%5$d个跳点所找到的第%4$d行,该行字段过于%1$s(%2$d/%3$d). %6$s\n" -#: fread.c:1690 +#: fread.c:1702 msgid "few" msgstr "少" -#: fread.c:1690 +#: fread.c:1702 msgid "many" msgstr "多" -#: fread.c:1690 +#: fread.c:1702 msgid "" "Most likely this jump landed awkwardly so type bumps here will be skipped." msgstr "很有可能这一跳点的位置并不合适,因此此处的类型转换将被跳过。" -#: fread.c:1716 +#: fread.c:1728 #, c-format msgid " Type codes (jump %03d) : %s Quote rule %d\n" msgstr " 类型码(跳点 %03d) : %s 引用规则 %d\n" -#: fread.c:1729 +#: fread.c:1741 #, c-format msgid "" " 'header' determined to be true due to column %d containing a string on row " @@ -2239,19 +2229,19 @@ msgstr "" " 'header' 参数设为真,原因是第%1$d列首行包含字符串,并且在样本中的另外%3$d行" "包含有较底层的数据类型(%2$s)\n" -#: fread.c:1741 +#: fread.c:1753 msgid "" "Internal error: row before first data row has the same number of fields but " "we're not using it." msgstr "内部错误:数据首行的前一行包含相同数量的字段但不会用到该行。" -#: fread.c:1742 +#: fread.c:1754 msgid "" "Internal error: ch!=pos after counting fields in the line before the first " "data row." msgstr "内部错误:对数据首行前一行的字段计数后,ch不等于pos" -#: fread.c:1743 +#: fread.c:1755 #, c-format msgid "" "Types in 1st data row match types in 2nd data row but previous row has %d " @@ -2260,7 +2250,7 @@ msgstr "" "数据第一行的类型与第二行相匹配,但是之前的行有 %d 个字段。故将第一行数据的前" "一行作为列名" -#: fread.c:1746 +#: fread.c:1758 #, c-format msgid "" "Detected %d column names but the data has %d columns (i.e. invalid file). " @@ -2268,7 +2258,7 @@ msgid "" msgstr "" "检测到 %d 个列名,然而数据共有 %d 列(文件不合法)。添加了 %d 个额外列名%s\n" -#: fread.c:1747 +#: fread.c:1759 msgid "" " for the first column which is guessed to be row names or an index. Use " "setnames() afterwards if this guess is not correct, or fix the file write " @@ -2277,17 +2267,17 @@ msgstr "" "作为第一列,并被用于猜测行名或索引。若上述猜测不正确,可在后续使用setnames()" "进行修改,或修复用于生成该文件的文件写入命令以生成有效的文件。" -#: fread.c:1747 +#: fread.c:1759 msgid "s at the end." msgstr "到结尾处" -#: fread.c:1749 +#: fread.c:1761 msgid "" "Internal error: fill=true but there is a previous row which should already " "have been filled." msgstr "内部错误:参数fill=true,但是在此之前有一行应当已经被填充。" -#: fread.c:1750 +#: fread.c:1762 #, c-format msgid "" "Detected %d column names but the data has %d columns. Filling rows " @@ -2296,74 +2286,74 @@ msgstr "" "检测到%d个列名,但数据共有%d列。已经自动填充。设置参数fill=TRUE以屏蔽此警" "告。\n" -#: fread.c:1754 +#: fread.c:1766 #, c-format msgid "Failed to realloc 2 x %d bytes for type and tmpType: %s" msgstr "为 %2$s 类型重新分配 2 x %1$d bytes失败" -#: fread.c:1774 +#: fread.c:1786 #, c-format msgid "" " 'header' determined to be %s because there are%s number fields in the " "first and only row\n" msgstr " 参数'header' 被设置为%s, 因为唯一的一行包含 %s 个字段\n" -#: fread.c:1774 +#: fread.c:1786 msgid " no" msgstr "0" -#: fread.c:1777 +#: fread.c:1789 msgid "" " 'header' determined to be true because all columns are type string and a " "better guess is not possible\n" msgstr "参数 'header' 被设置为true,因为所有列类型均为字符串\n" -#: fread.c:1779 +#: fread.c:1791 msgid "" " 'header' determined to be false because there are some number columns and " "those columns do not have a string field at the top of them\n" msgstr "参数 'header' 被设置为false,因为部分字段的首行不为字符串\n" -#: fread.c:1795 +#: fread.c:1807 #, c-format msgid " Type codes (first row) : %s Quote rule %d\n" msgstr " 类型码(第一行) : %s 引用规则 %d\n" -#: fread.c:1804 +#: fread.c:1816 #, c-format msgid "" " All rows were sampled since file is small so we know nrow=% " "exactly\n" msgstr " 文件太小,全部行均被采样到,所以 nrow=%\n" -#: fread.c:1816 fread.c:1823 +#: fread.c:1828 fread.c:1835 msgid " =====\n" msgstr " =====\n" -#: fread.c:1817 +#: fread.c:1829 #, c-format msgid "" " Sampled % rows (handled \\n inside quoted fields) at %d jump " "points\n" msgstr " 已使用了 %2$d个跳点抽样 %1$ 行(处理了字段间的分隔符\\n)\n" -#: fread.c:1818 +#: fread.c:1830 #, c-format msgid "" " Bytes from first data row on line %d to the end of last row: %\n" msgstr " 从第一个数据行(%d)到最后一行的字节: %\n" -#: fread.c:1819 +#: fread.c:1831 #, c-format msgid " Line length: mean=%.2f sd=%.2f min=%d max=%d\n" msgstr "文件每行长度的统计量:均值=%.2f,标准差=%.2f,最小值=%d ,最大值=%d\n" -#: fread.c:1820 +#: fread.c:1832 #, c-format msgid " Estimated number of rows: % / %.2f = %\n" msgstr "估计数据共有 % / %.2f = % 行\n" -#: fread.c:1821 +#: fread.c:1833 #, c-format msgid "" " Initial alloc = % rows (% + %d%%) using bytes/" @@ -2372,44 +2362,44 @@ msgstr "" "为 % 行 (% + %d%%)分配初始内存,大小为字节数/max(mean-2*sd," "min),并确保该数值落于区间[1.1*estn, 2.0*estn]中\n" -#: fread.c:1825 +#: fread.c:1837 #, c-format msgid "Internal error: sampleLines(%) > allocnrow(%)" msgstr "内部错误:sampleLines(%) > allocnrow(%)" -#: fread.c:1829 +#: fread.c:1841 #, c-format msgid " Alloc limited to lower nrows=% passed in.\n" msgstr " 分配被限制在输入的更小的 nrows=% 值上。\n" -#: fread.c:1841 +#: fread.c:1853 msgid "[08] Assign column names\n" msgstr "[08] 指定列名\n" -#: fread.c:1849 +#: fread.c:1861 #, c-format msgid "Unable to allocate %d*%d bytes for column name pointers: %s" msgstr "无法分配 %d*%d 字节给列名指针: %s" -#: fread.c:1871 +#: fread.c:1883 #, c-format msgid "Internal error: reading colnames ending on '%c'" msgstr "内部错误:读取列名终止于 '%c'" -#: fread.c:1889 +#: fread.c:1901 msgid "[09] Apply user overrides on column types\n" msgstr "[09] 使用用户指定的列类型\n" -#: fread.c:1893 +#: fread.c:1905 msgid " Cancelled by user: userOverride() returned false." msgstr " 用户已取消:userOverride() 返回 false。" -#: fread.c:1903 +#: fread.c:1915 #, c-format msgid "Failed to allocate %d bytes for size array: %s" msgstr "无法分配 %d 字节给 size 数组:%s" -#: fread.c:1910 +#: fread.c:1922 #, c-format msgid "" "Attempt to override column %d <<%.*s>> of inherent type '%s' down to '%s' " @@ -2419,40 +2409,40 @@ msgstr "" "试图覆盖第 %d 列 <<%.*s>>,将内部类型 '%s' 降级为 '%s' 的操作被忽略。只支持将" "列类型升为更高阶的类型。如果确定此操作,请完成之后再转换类型。" -#: fread.c:1924 +#: fread.c:1936 #, c-format msgid " After %d type and %d drop user overrides : %s\n" msgstr " 经过 %d 类型和 %d 丢弃用户覆盖:%s\n" -#: fread.c:1932 +#: fread.c:1944 msgid "[10] Allocate memory for the datatable\n" msgstr "[10] 分配内存给 datatable\n" -#: fread.c:1933 +#: fread.c:1945 #, c-format msgid " Allocating %d column slots (%d - %d dropped) with % rows\n" msgstr " 正在分配 %d 列位置(%d - %d 已丢弃),% 行\n" -#: fread.c:1987 +#: fread.c:1999 #, c-format msgid "Buffer size % is too large\n" msgstr "缓冲长度 % 过大\n" -#: fread.c:1990 +#: fread.c:2002 msgid "[11] Read the data\n" msgstr "[11] 读取数据\n" -#: fread.c:1993 +#: fread.c:2005 #, c-format msgid " jumps=[%d..%d), chunk_size=%, total_size=%\n" msgstr " jumps=[%d..%d),chunk_size=%,total_size=%\n" -#: fread.c:2005 +#: fread.c:2017 #, c-format msgid "Internal error: Master thread is not thread 0 but thread %d.\n" msgstr "内部错误:主线程并非线程0而是线程%d\n" -#: fread.c:2213 +#: fread.c:2225 #, c-format msgid "" "Column %d (\"%.*s\") bumped from '%s' to '%s' due to <<%.*s>> on row " @@ -2461,14 +2451,14 @@ msgstr "" "第 %d 列(\"%.*s\") 发生了从 '%s' 到 '%s' 的类型转换,由于 <<%.*s>> 出现在第 " "% 行\n" -#: fread.c:2262 +#: fread.c:2274 #, c-format msgid "" "Internal error: invalid head position. jump=%d, headPos=%p, thisJumpStart=" "%p, sof=%p" msgstr "内部错误:head 位置无效。jump=%d, headPos=%p, thisJumpStart=%p, sof=%p" -#: fread.c:2335 +#: fread.c:2347 #, c-format msgid "" " Too few rows allocated. Allocating additional % rows (now nrows=" @@ -2477,42 +2467,42 @@ msgstr "" " 分配的行数太少。正在分配额外的 % 行(当前 nrows=%),并从跳" "跃 %d 继续读取\n" -#: fread.c:2342 +#: fread.c:2354 #, c-format msgid " Restarting team from jump %d. nSwept==%d quoteRule==%d\n" msgstr " 从跳跃 %d 重启组。nSwept==%d quoteRule==%d\n" -#: fread.c:2362 +#: fread.c:2374 #, c-format msgid " %d out-of-sample type bumps: %s\n" msgstr " %d 样本外类型变更:%s\n" -#: fread.c:2398 +#: fread.c:2410 #, c-format msgid "" "Read % rows x %d columns from %s file in %02d:%06.3f wall clock " "time\n" msgstr "读取 % 行 x %d 列,从 %s 文件(时钟时间 %02d:%06.3f)\n" -#: fread.c:2405 +#: fread.c:2417 msgid "[12] Finalizing the datatable\n" msgstr "[12] 最后定型 datatable\n" -#: fread.c:2406 +#: fread.c:2418 msgid " Type counts:\n" msgstr " 类型数量:\n" -#: fread.c:2408 +#: fread.c:2420 #, c-format msgid "%10d : %-9s '%c'\n" msgstr "%10d : %-9s '%c'\n" -#: fread.c:2424 +#: fread.c:2436 #, c-format msgid "Discarded single-line footer: <<%s>>" msgstr "丢弃末尾行:<<%s>>" -#: fread.c:2429 +#: fread.c:2441 #, c-format msgid "" "Stopped early on line %. Expected %d fields but found %d. Consider " @@ -2521,7 +2511,7 @@ msgstr "" "在第 % 行提前终止。预期有 %d 个字段但只找到 %d 个。可以考虑设置 " "fill=TRUE 和 comment.char=。 首个丢弃的非空行:<<%s>>" -#: fread.c:2435 +#: fread.c:2447 #, c-format msgid "" "Found and resolved improper quoting out-of-sample. First healed line " @@ -2532,31 +2522,31 @@ msgstr "" "不在引号内(例如:字段间隔符没有在任何一个字段中出现),尝试用 quote=\"\" 来" "避免该警告。" -#: fread.c:2439 +#: fread.c:2451 msgid "=============================\n" msgstr "=============================\n" -#: fread.c:2441 +#: fread.c:2453 #, c-format msgid "%8.3fs (%3.0f%%) Memory map %.3fGB file\n" msgstr "%8.3fs (%3.0f%%) 内存映射 %.3fGB 文件\n" -#: fread.c:2442 +#: fread.c:2454 #, c-format msgid "%8.3fs (%3.0f%%) sep=" msgstr "%8.3fs (%3.0f%%) sep=" -#: fread.c:2444 +#: fread.c:2456 #, c-format msgid " ncol=%d and header detection\n" msgstr " ncol=%d 和表头检测\n" -#: fread.c:2445 +#: fread.c:2457 #, c-format msgid "%8.3fs (%3.0f%%) Column type detection using % sample rows\n" msgstr "%8.3fs (%3.0f%%) 列类型检测基于 % 个样本行\n" -#: fread.c:2447 +#: fread.c:2459 #, c-format msgid "" "%8.3fs (%3.0f%%) Allocation of % rows x %d cols (%.3fGB) of which " @@ -2565,7 +2555,7 @@ msgstr "" "%8.3fs (%3.0f%%) % 行 x %d 列 (%.3fGB) 的分配中已使用 % " "(%3.0f%%) 行\n" -#: fread.c:2451 +#: fread.c:2463 #, c-format msgid "" "%8.3fs (%3.0f%%) Reading %d chunks (%d swept) of %.3fMB (each chunk %d rows) " @@ -2574,29 +2564,29 @@ msgstr "" "%8.3fs (%3.0f%%) 正在读取 %d 个块 (%d 已扫描) of %.3fMB (每个块 %d 行) 使用 " "%d 个线程\n" -#: fread.c:2453 +#: fread.c:2465 #, c-format msgid "" " + %8.3fs (%3.0f%%) Parse to row-major thread buffers (grown %d times)\n" msgstr " + %8.3fs (%3.0f%%) 解析到行处理线程的缓冲区(已增长 %d 次)\n" -#: fread.c:2454 +#: fread.c:2466 #, c-format msgid " + %8.3fs (%3.0f%%) Transpose\n" msgstr " + %8.3fs (%3.0f%%) 转置\n" -#: fread.c:2455 +#: fread.c:2467 #, c-format msgid " + %8.3fs (%3.0f%%) Waiting\n" msgstr " + %8.3fs (%3.0f%%) 正在等待\n" -#: fread.c:2456 +#: fread.c:2468 #, c-format msgid "" "%8.3fs (%3.0f%%) Rereading %d columns due to out-of-sample type exceptions\n" msgstr "%8.3fs (%3.0f%%) 正在重读 %d 列,由于样本外类型异常\n" -#: fread.c:2458 +#: fread.c:2470 #, c-format msgid "%8.3fs Total\n" msgstr "%8.3fs 总计\n" @@ -2688,7 +2678,7 @@ msgstr "" "select =是一个命名向量,用于指定要选择的列及其类型,但是还提供了colClasses " "=。 请删除colClasses =。" -#: freadR.c:196 freadR.c:346 +#: freadR.c:196 freadR.c:342 msgid "colClasses is type list but has no names" msgstr "colClasses是类型列表,但没有名称" @@ -2755,11 +2745,6 @@ msgid "Column number %d ('%s') has been selected twice by select=" msgstr "列号%d('%s')已由select =选择两次" #: freadR.c:313 -msgid "" -"colClasses='NULL' is not permitted; i.e. to drop all columns and load nothing" -msgstr "colClasses ='NULL'是不允许的; 即删除所有列而不加载任何内容" - -#: freadR.c:318 #, c-format msgid "" "colClasses= is an unnamed vector of types, length %d, but there are %d " @@ -2771,11 +2756,11 @@ msgstr "" "定类型,可以使用命名向量,列表格式或使用select=而不是colClasses=。请参阅'?" "fread'中的示例。" -#: freadR.c:329 +#: freadR.c:325 msgid "Internal error: selectInts is NULL but selectColClasses is true" msgstr "内部错误:selectInts为NULL,但selectColClasses为true" -#: freadR.c:330 +#: freadR.c:327 msgid "" "Internal error: length(selectSxp)!=length(colClassesSxp) but " "selectColClasses is true" @@ -2783,22 +2768,22 @@ msgstr "" "内部错误:length(select xp)!=length(colClasses xp),但select ColClasses" "为true" -#: freadR.c:344 +#: freadR.c:340 #, c-format msgid "colClasses is type '%s' but should be list or character" msgstr "colClasses是类型'%s',但应该是列表或字符" -#: freadR.c:368 +#: freadR.c:364 #, c-format msgid "Column name '%s' (colClasses[[%d]][%d]) not found" msgstr "找不到列名'%s'(colClasses[[%d]][%d])" -#: freadR.c:370 +#: freadR.c:366 #, c-format msgid "colClasses[[%d]][%d] is NA" msgstr "colClasses[[%d]][%d]是NA" -#: freadR.c:374 +#: freadR.c:370 #, c-format msgid "" "Column %d ('%s') appears more than once in colClasses. The second time is " @@ -2806,22 +2791,22 @@ msgid "" msgstr "" "Column %d ('%s')在colClasses中出现了多次。第二次是colClasses[[%d]][%d]." -#: freadR.c:381 +#: freadR.c:377 #, c-format msgid "Column number %d (colClasses[[%d]][%d]) is out of range [1,ncol=%d]" msgstr "列号%d(colClasses[[%d]][%d])超出范围[1,ncol=%d]" -#: freadR.c:583 +#: freadR.c:579 #, c-format msgid "Field size is 1 but the field is of type %d\n" msgstr "字段大小为1,但字段类型为%d \n" -#: freadR.c:592 +#: freadR.c:588 #, c-format msgid "Internal error: unexpected field of size %d\n" msgstr "内部错误:大小为%d 的意外字段\n" -#: freadR.c:660 +#: freadR.c:656 #, c-format msgid "%s" msgstr "%s" @@ -3010,7 +2995,7 @@ msgstr "" "内部错误: 在 rolling 函数中无效的 fun 参数, 理应在更早阶段排除请向data.table " "issue tracker报告" -#: frollR.c:155 frollR.c:279 nafill.c:152 shift.c:21 +#: frollR.c:155 frollR.c:279 nafill.c:162 shift.c:21 msgid "fill must be a vector of length 1" msgstr "fill 必须是长度为1的向量" @@ -3086,7 +3071,7 @@ msgid "%s: running in parallel for input length %, hasna %d, narm %d\n" msgstr "%s: 正在并行运行, 输入长度 %, hasna %d, narm %d\n" #: fsort.c:111 -msgid "x must be a vector of type 'double' currently" +msgid "x must be a vector of type double currently" msgstr "x 目前必须是双精度 ('double') 类型的向量" #: fsort.c:122 @@ -3299,18 +3284,19 @@ msgstr "内部错误:getMaxListItemLen应该已经预先抓取了这个" #: fwriteR.c:98 #, c-format msgid "" -"Row %d of list column is type '%s' - not yet implemented. fwrite() can write " -"list columns containing items which are atomic vectors of type logical, " -"integer, integer64, double, complex and character." +"Row % of list column is type '%s' - not yet implemented. fwrite() " +"can write list columns containing items which are atomic vectors of type " +"logical, integer, integer64, double, complex and character." msgstr "" -"列表页行%d的类型是'%s' - 尚未实施. fwrite()可以写入包含逻辑类型原子向量项目的" -"列表页,整数,整数64,双精度,复数和字符" +"列表页行%的类型是'%s' - 尚未实施. fwrite()可以写入包含逻辑类型原子向" +"量项目的列表页,整数,整数64,双精度,复数和字符" #: fwriteR.c:103 #, c-format msgid "" -"Internal error: row %d of list column has no max length method implemented" -msgstr "内部错误:列表页的%d行没有实现最大长度方法" +"Internal error: row % of list column has no max length method " +"implemented" +msgstr "内部错误:列表页的%行没有实现最大长度方法" #: fwriteR.c:170 msgid "" @@ -3321,17 +3307,18 @@ msgstr "fwrite必须传递一个类型为列表的对象;比如data.frame, dat msgid "fwrite was passed an empty list of no columns. Nothing to write." msgstr "fwrite传递了一个没有列的空列表. 没有对象可以写入" -#: fwriteR.c:234 +#: fwriteR.c:232 #, c-format -msgid "Column %d's length (%d) is not the same as column 1's length (%d)" -msgstr "列%d的长度(%d)和列1的长度(%d)不一致" +msgid "" +"Column %d's length (%d) is not the same as column 1's length (%)" +msgstr "列%d的长度(%d)和列1的长度(%)不一致" -#: fwriteR.c:237 +#: fwriteR.c:236 #, c-format msgid "Column %d's type is '%s' - not yet implemented in fwrite." msgstr "列%d的类型是'%s' - 尚未在fwrite中实施" -#: fwriteR.c:262 +#: fwriteR.c:261 msgid "" "No list columns are present. Setting sep2='' otherwise quote='auto' would " "quote fields containing sep2.\n" @@ -3339,7 +3326,7 @@ msgstr "" "当前没有列表页. 设置sep2=''否则quote='auto'会自动为所有包含sep2的字段加上引" "号.\n" -#: fwriteR.c:266 +#: fwriteR.c:265 #, c-format msgid "" "If quote='auto', fields will be quoted if the field contains either sep " @@ -3349,7 +3336,7 @@ msgstr "" "that host lists),所有包含sep('%1$c') 或 sep2 ('%2$c')的字段将会被自动加上引" "号。\n" -#: fwriteR.c:270 +#: fwriteR.c:269 #, c-format msgid "" "sep ('%c'), sep2 ('%c') and dec ('%c') must all be different. Column %d is a " @@ -3450,14 +3437,15 @@ msgstr "" "某整数列分组求和的结果中,出现了超过了整型(interger)数值所允许最大值的情" "况,故结果被自动转换为数值类型(numeric)" -#: gsumm.c:565 +#: gsumm.c:565 gsumm.c:650 gsumm.c:794 gsumm.c:940 gsumm.c:992 gsumm.c:1073 +#: gsumm.c:1153 gsumm.c:1250 gsumm.c:1382 gsumm.c:1384 gsumm.c:1446 #, c-format msgid "" -"Type '%s' not supported by GForce sum (gsum). Either add the prefix base::" -"sum(.) or turn off GForce optimization using options(datatable.optimize=1)" +"Type '%s' is not supported by GForce %s. Either add the prefix %s or turn " +"off GForce optimization using options(datatable.optimize=1)" msgstr "" -"GForce 求和(gsum)不支持类型 '%s'。请使用 base::sum(.) 或者设置 " -"options(datatable.optimize=1) 关闭 GForce 优化" +"GForce %2$s 不支持类型'%1$s',要么添加前缀 %3$s,要么使用选项datatable." +"optimize=1来关闭GForce优化。" #: gsumm.c:578 msgid "" @@ -3491,19 +3479,10 @@ msgstr "无法为 gmean na.rm=TRUE 的计数(counts)分配 %d * %d 字节空 msgid "Unable to allocate %d * %d bytes for si in gmean na.rm=TRUE" msgstr "无法为 gmean na.rm=TRUE 的 si 分配 %d * %d 字节空间" -#: gsumm.c:650 +#: gsumm.c:674 utils.c:280 #, c-format -msgid "" -"Type '%s' not supported by GForce mean (gmean) na.rm=TRUE. Either add the " -"prefix base::mean(.) or turn off GForce optimization using options(datatable." -"optimize=1)" -msgstr "" -"GForce 求均值(gmean)不支持类型 '%s'。请使用 base::mean(.) 或者设置 " -"options(datatable.optimize=1) 关闭 GForce 优化" - -#: gsumm.c:674 -msgid "Internal error: unsupported type at the end of gmean" -msgstr "内部错误:gmean 结尾处存在不支持的类型" +msgid "Internal error: type '%s' not supported in %s" +msgstr "内部错误: %2$s 不支持类型 '%1$s'" #: gsumm.c:687 msgid "" @@ -3547,15 +3526,6 @@ msgstr "" msgid "Type 'complex' has no well-defined min" msgstr "复数不能比较大小,故没有最小值" -#: gsumm.c:794 -#, c-format -msgid "" -"Type '%s' not supported by GForce min (gmin). Either add the prefix base::" -"min(.) or turn off GForce optimization using options(datatable.optimize=1)" -msgstr "" -"类型'%s'不支持应用 GForce 最小值(gmin) 优化。你可以添加前缀 base::min(.) 或" -"者使用 options(datatable.optimize=1) 关闭 GForce 优化" - #: gsumm.c:806 msgid "" "GForce max can only be applied to columns, not .SD or similar. To find max " @@ -3583,15 +3553,6 @@ msgstr "" msgid "Type 'complex' has no well-defined max" msgstr "类型'complex'没有明确定义的最大值" -#: gsumm.c:940 -#, c-format -msgid "" -"Type '%s' not supported by GForce max (gmax). Either add the prefix base::" -"max(.) or turn off GForce optimization using options(datatable.optimize=1)" -msgstr "" -"GForce的max (gmax)函数不支持类型 '%s'。请使用 base::max(.) 或者设置 " -"options(datatable.optimize=1) 来关掉GForce优化" - #: gsumm.c:951 msgid "" "GForce median can only be applied to columns, not .SD or similar. To find " @@ -3609,60 +3570,30 @@ msgstr "" msgid "median is not meaningful for factors." msgstr "因子的中位值没有意义。" -#: gsumm.c:992 -#, c-format -msgid "" -"Type '%s' not supported by GForce median (gmedian). Either add the prefix " -"stats::median(.) or turn off GForce optimization using options(datatable." -"optimize=1)" -msgstr "" -"GForce函数median (gmedian)不支持类型'%s'。请使用 stats::tail(.) 或者设置 " -"options(datatable.optimize=1) 来关掉GForce优化。" - -#: gsumm.c:1073 -#, c-format -msgid "" -"Type '%s' not supported by GForce tail (gtail). Either add the prefix utils::" -"tail(.) or turn off GForce optimization using options(datatable.optimize=1)" -msgstr "" -"GForce函数tail (gtail)不支持类型'%s'。请使用 utils::tail(.) 或者设置 " -"options(datatable.optimize=1) 来关掉GForce优化。" - -#: gsumm.c:1153 -#, c-format -msgid "" -"Type '%s' not supported by GForce head (ghead). Either add the prefix utils::" -"head(.) or turn off GForce optimization using options(datatable.optimize=1)" -msgstr "" -"GForce函数head (ghead)不支持类型'%s'。请使用 utils::head(.) 或者设置 " -"options(datatable.optimize=1) 来关掉GForce优化。" - #: gsumm.c:1161 msgid "" "Internal error, gtail is only implemented for n=1. This should have been " "caught before. please report to data.table issue tracker." -msgstr "内部错误:gtail仅能应用于n=1的情况。此错误理应已被处理。请在 data.table 的 GitHub中提交报告。" +msgstr "" +"内部错误:gtail仅能应用于n=1的情况。此错误理应已被处理。请在 data.table 的 " +"GitHub中提交报告。" #: gsumm.c:1166 msgid "" "Internal error, ghead is only implemented for n=1. This should have been " "caught before. please report to data.table issue tracker." -msgstr "内部错误:ghead仅能应用于n=1的情况。此错误理应已被处理。请在 data.table 的 GitHub中提交报告。" +msgstr "" +"内部错误:ghead仅能应用于n=1的情况。此错误理应已被处理。请在 data.table 的 " +"GitHub中提交报告。" #: gsumm.c:1172 msgid "" "Internal error, `g[` (gnthvalue) is only implemented single value subsets " "with positive index, e.g., .SD[2]. This should have been caught before. " "please report to data.table issue tracker." -msgstr "内部错误:`g[` (gnthvalue) 仅能用于采用单个正数索引求取子集,如 .SD[2]。此错误理应已被处理。请在 data.table 的 GitHub中提交报告。" - -#: gsumm.c:1250 -#, c-format -msgid "" -"Type '%s' not supported by GForce subset `[` (gnthvalue). Either add the " -"prefix utils::head(.) or turn off GForce optimization using " -"options(datatable.optimize=1)" -msgstr "GForce取子集运算符`[` (gnthvalue)尚不支持'%s'类型。。请添加前缀stats::var(.),或使用options(datatable.optimize=1) 关闭 GForce优化" +msgstr "" +"内部错误:`g[` (gnthvalue) 仅能用于采用单个正数索引求取子集,如 .SD[2]。此错" +"误理应已被处理。请在 data.table 的 GitHub中提交报告。" #: gsumm.c:1262 msgid "" @@ -3672,28 +3603,16 @@ msgid "" "using options(datatable.optimize=1). Alternatively, if you only need the " "diagonal elements, 'DT[,lapply(.SD,var),by=,.SDcols=]' is the optimized way " "to do this." -msgstr "GForce var/sd 仅能应用于列,而非.SD或其他。若要求取某一列表,如.SD,所有元素的全协方差矩阵,请添加前缀stats::var(.SD)(或stats::sd(.SD)),或使用options(datatable.optimize=1) 关闭 GForce优化。另外,若仅需获得对角线元素,最佳的方式是使用'DT[,lapply(.SD,var),by=,.SDcols=]'。" +msgstr "" +"GForce var/sd 仅能应用于列,而非.SD或其他。若要求取某一列表,如.SD,所有元素" +"的全协方差矩阵,请添加前缀stats::var(.SD)(或stats::sd(.SD)),或使用" +"options(datatable.optimize=1) 关闭 GForce优化。另外,若仅需获得对角线元素,最" +"佳的方式是使用'DT[,lapply(.SD,var),by=,.SDcols=]'。" #: gsumm.c:1263 msgid "var/sd is not meaningful for factors." msgstr "无法对因子类型使用 var/sd。" -#: gsumm.c:1382 -#, c-format -msgid "" -"Type '%s' not supported by GForce var (gvar). Either add the prefix stats::" -"var(.) or turn off GForce optimization using options(datatable.optimize=1)" -msgstr "GForce var (gvar) 尚不支持 '%s'类型。请添加前缀stats::var(.),或使用options(datatable.optimize=1) 关闭 GForce优化" - -#: gsumm.c:1384 -#, c-format -msgid "" -"Type '%s' not supported by GForce sd (gsd). Either add the prefix stats::" -"sd(.) or turn off GForce optimization using options(datatable.optimize=1)" -msgstr "" -"GForce sd (gsd)不支持类型'%s',要么添加前缀 stats::sd(.),要么使用选项" -"datatable.optimize=1来关闭GForce优化。" - #: gsumm.c:1403 msgid "" "GForce prod can only be applied to columns, not .SD or similar. To multiply " @@ -3714,15 +3633,6 @@ msgstr "prod对于因子是没有意义的" msgid "Unable to allocate %d * %d bytes for gprod" msgstr "无法给gprod分配%d * %d 字节" -#: gsumm.c:1446 -#, c-format -msgid "" -"Type '%s' not supported by GForce prod (gprod). Either add the prefix base::" -"prod(.) or turn off GForce optimization using options(datatable.optimize=1)" -msgstr "" -"GForce prod (gprod)不支持类型'%s',要么添加前缀 base::prod(.),要么使用选项" -"datatable.optimize=1来关闭GForce优化。" - #: ijoin.c:22 ijoin.c:243 msgid "" "Internal error: invalid value for 'mult'; this should have been caught " @@ -3963,7 +3873,7 @@ msgstr "参数'x'是一个原子型矢量,原位的更新只为list 或 data.t msgid "'x' argument must be numeric type, or list/data.table of numeric types" msgstr "参数'x'必须是数字类型,或者是数字类型的list/data.table" -#: nafill.c:149 nafill.c:180 +#: nafill.c:159 nafill.c:190 msgid "" "Internal error: invalid type argument in nafillR function, should have been " "caught before. Please report to data.table issue tracker." @@ -3971,7 +3881,7 @@ msgstr "" "内部错误:函数 nafillR 中有无效类型的参数, 该错误理应已被捕获,请向data.table" "的issue通道报告" -#: nafill.c:196 +#: nafill.c:206 #, c-format msgid "%s: parallel processing of %d column(s) took %.3fs\n" msgstr "%s : 并行处理 %d 列, 用时 %.3fs\n" @@ -3994,10 +3904,6 @@ msgstr "" "忽略无效的R_DATATABLE_NUM_PROCS_PERCENT==%d. 如需使用,它必须是一个2-100的整" "型,默认值为50查看?setDTtheads." -#: openmp-utils.c:67 -msgid "'verbose' must be TRUE or FALSE" -msgstr "'verbose'必须是TRUE或者FALSE" - #: openmp-utils.c:70 msgid "" "This installation of data.table has not been compiled with OpenMP support.\n" @@ -4296,7 +4202,8 @@ msgstr "" msgid "" "Failed to allocate working memory for %d factor levels of result column %d " "when reading item %d of item %d" -msgstr "当读取第%4$d项的第%3$d个子项时,无法为第%2$d列的%1$d个因素水平分配工作内存" +msgstr "" +"当读取第%4$d项的第%3$d个子项时,无法为第%2$d列的%1$d个因素水平分配工作内存" #: rbindlist.c:523 #, c-format @@ -4341,16 +4248,21 @@ msgstr "排序必须是整数向量" msgid "nrow(x)[%d]!=length(order)[%d]" msgstr "nrow(x)[%d] 不等于 length(order)[%d]" -#: reorder.c:48 +#: reorder.c:51 #, c-format -msgid "order is not a permutation of 1:nrow[%d]" -msgstr "顺序与 1 到 nrow[%d] 的排列不同" +msgid "" +"Item %d of order (%d) is either NA, out of range [1,%d], or is duplicated. " +"The new order must be a strict permutation of 1:n" +msgstr "" -#: reorder.c:57 +#: reorder.c:105 +msgid "dt passed to setcolorder has no names" +msgstr "setcolorder读取到的dt并没有名字" + +#: reorder.c:107 #, c-format -msgid "" -"Unable to allocate %d * %d bytes of working memory for reordering data.table" -msgstr "在工作内存中无法分配 %d * %d 个字节对 data.table 重新排序" +msgid "Internal error: dt passed to setcolorder has %d columns but %d names" +msgstr "内部错误: setcolorder读取到的dt有 %d 列但是有 %d 个名字。" #: shift.c:17 #, c-format @@ -4376,17 +4288,12 @@ msgstr "内部错误:k 必须是整数" msgid "Item %d of n is NA" msgstr "n 的第 %d 项是NA" -#: shift.c:157 -#, c-format -msgid "Unsupported type '%s'" -msgstr "不支持 '%s' 类型" - #: subset.c:7 #, c-format msgid "Internal error: subsetVectorRaw length(ans)==%d n=%d" msgstr "内部错误: subsetVectorRaw ans length(ans)==%d n=%d" -#: subset.c:88 +#: subset.c:83 #, c-format msgid "" "Internal error: column type '%s' not supported by data.table subset. All " @@ -4395,44 +4302,39 @@ msgstr "" "内部错误:data.table 子集不支持列类型 '%s' 。已知所有类型均被支持,因此请提交" "此BUG。" -#: subset.c:97 subset.c:121 +#: subset.c:116 #, c-format msgid "Internal error. 'idx' is type '%s' not 'integer'" msgstr "内部错误:'idx' 是 '%s' 类型,而非 '整数'" -#: subset.c:122 +#: subset.c:117 #, c-format msgid "" "Internal error. 'maxArg' is type '%s' and length %d, should be an integer " "singleton" msgstr "内部错误:'maxArg' 是 '%s' 类型,长度为 %d ,应该是单一整数" -#: subset.c:123 +#: subset.c:118 msgid "Internal error: allowOverMax must be TRUE/FALSE" msgstr "内部错误:allowOverMax 必须是 TRUE 或 FALSE" -#: subset.c:125 +#: subset.c:120 #, c-format msgid "Internal error. max is %d, must be >= 0." msgstr "内部错误。最大值是 %d ,且必须 >= 0。" -#: subset.c:149 -#, c-format -msgid "i[%d] is %d which is out of range [1,nrow=%d]" -msgstr "i[%d] 是 %d ,超出 [1,nrow=%d] 的范围" - -#: subset.c:161 +#: subset.c:156 #, c-format msgid "" "Item %d of i is %d and item %d is %d. Cannot mix positives and negatives." msgstr "i 的第 %d 项是 %d ,第 %d 项是 %d 。正负不能混用。" -#: subset.c:171 +#: subset.c:166 #, c-format msgid "Item %d of i is %d and item %d is NA. Cannot mix negatives and NA." msgstr "i 的第 %d 项是 %d ,第 %d 项是 NA 。负值和 NA 不能混用。" -#: subset.c:207 +#: subset.c:202 #, c-format msgid "" "Item %d of i is %d but there are only %d rows. Ignoring this and %d more " @@ -4440,7 +4342,7 @@ msgid "" msgstr "" "i 的第 %d 项是 %d ,但只有 %d 行。忽略这项以及其他相似的 %d 项(共 %d 项)。" -#: subset.c:209 +#: subset.c:204 #, c-format msgid "" "Item %d of i is %d which removes that item but that has occurred before. " @@ -4449,40 +4351,35 @@ msgstr "" "i 的第 %d 项是 %d ,它删除了这项但此操作之前发生过。忽略该重复以及其他 %d 个" "重复。" -#: subset.c:223 +#: subset.c:218 #, c-format msgid "Column %d is NULL; malformed data.table." msgstr "%d 列为空(NULL);data.table 格式错误。" -#: subset.c:226 +#: subset.c:221 #, c-format msgid "Column %d ['%s'] is a data.frame or data.table; malformed data.table." msgstr "%d ['%s'] 列是 data.frame 或 data.table; data.table 格式错误。" -#: subset.c:231 +#: subset.c:226 #, c-format msgid "" "Column %d ['%s'] is length %d but column 1 is length %d; malformed data." "table." msgstr "%d ['%s'] 长度为 %d ,而列 1 的长度为 %d ;data.table 格式错误。" -#: subset.c:247 +#: subset.c:258 #, c-format -msgid "Internal error. Argument 'x' to CsubsetDT is type '%s' not 'list'" -msgstr "内部错误:CsubsetDT 的参数 'x' 是 '%s' 类型而非列表" +msgid "Item %d of cols is %d which is outside the range [1,ncol(x)=%d]" +msgstr "cols 的 %d 项为 %d ,超出1的范围 [1,ncol(x)=%d]" -#: subset.c:260 -#, c-format -msgid "Internal error. Argument 'cols' to Csubset is type '%s' not 'integer'" -msgstr "内部错误:CsubsetDT 的参数 'cols' 是 '%s' 类型而非整数" - -#: subset.c:337 +#: subset.c:332 msgid "" "Internal error: NULL can not be subset. It is invalid for a data.table to " "contain a NULL column." msgstr "内部错误:空集(NULL)不能作为子集。data.table 包含空列是无效的。" -#: subset.c:339 +#: subset.c:334 msgid "" "Internal error: CsubsetVector is internal-use-only but has received " "negatives, zeros or out-of-range" @@ -4533,11 +4430,6 @@ msgstr "内部错误:uniqlist 已经传递长度为 0 的序列" msgid "Internal error: uniqlist has been passed length(order)==%d but nrow==%d" msgstr "内部错误:uniqlist 已经传递长度为 %d 的序列,而行数是 %d" -#: uniqlist.c:96 uniqlist.c:127 uniqlist.c:208 uniqlist.c:245 uniqlist.c:318 -#, c-format -msgid "Type '%s' not supported" -msgstr "类型 '%s' 不被支持" - #: uniqlist.c:148 msgid "Input argument 'x' to 'uniqlengths' must be an integer vector" msgstr "输入到 'uniqlengths' 的参数 'x' 必须是整数向量" @@ -4547,14 +4439,14 @@ msgid "" "Input argument 'n' to 'uniqlengths' must be an integer vector of length 1" msgstr "输入到 'uniqlengths' 的参数 'n' 必须是长度为 1 的整数向量" -#: uniqlist.c:167 +#: uniqlist.c:167 uniqlist.c:264 msgid "cols must be an integer vector with length >= 1" msgstr "cols必须是一个长度大于等于1的整数向量" #: uniqlist.c:171 #, c-format -msgid "Item %d of cols is %d which is outside range of l [1,length(l)=%d]" -msgstr "列的%d项是%d,它超出l的所在区间[1,length(l)=%d]" +msgid "Item %d of cols is %d which is outside the range [1,length(l)=%d]" +msgstr "cols 的%d项是%d,它超出所在区间[1,length(l)=%d]" #: uniqlist.c:174 #, c-format @@ -4574,72 +4466,64 @@ msgstr "内部错误:nestedid并不是一个长度大于或者等于1的列表 msgid "Internal error: nrows[%d]>0 but ngrps==0" msgstr "内部错误:nrows[%d]>0但是but ngrps==0" -#: uniqlist.c:264 -msgid "cols must be an integer vector of positive length" -msgstr "cols必须是一个长度大于零的整数向量" - #: uniqlist.c:349 msgid "x is not a logical vector" msgstr "x不是一个逻辑向量" -#: utils.c:73 +#: utils.c:80 #, c-format msgid "Unsupported type '%s' passed to allNA()" msgstr "allNA() 不支持'%s'类型" -#: utils.c:92 +#: utils.c:99 msgid "'x' argument must be data.table compatible" msgstr "'x' 必须为data.table支持的类型" -#: utils.c:94 +#: utils.c:101 msgid "'check_dups' argument must be TRUE or FALSE" msgstr "参数'check_dups'必须为TRUE或者是FALSE" -#: utils.c:110 +#: utils.c:117 msgid "" "argument specifying columns is type 'double' and one or more items in it are " "not whole integers" msgstr "指定列的参数是一个双精度类型而其中至少有一个元素不是整数" -#: utils.c:116 +#: utils.c:123 #, c-format -msgid "argument specifying columns specify non existing column(s): cols[%d]=%d" +msgid "" +"argument specifying columns received non-existing column(s): cols[%d]=%d" msgstr "指定列的参数指定了不存在的列: cols[%d]=%d" -#: utils.c:121 +#: utils.c:128 msgid "'x' argument data.table has no names" msgstr "data.table的参数x并没有名字" -#: utils.c:126 +#: utils.c:133 #, c-format msgid "" -"argument specifying columns specify non existing column(s): cols[%d]='%s'" +"argument specifying columns received non-existing column(s): cols[%d]='%s'" msgstr "指定列的参数指定了不存在的列: cols[%d]='%s'" -#: utils.c:129 +#: utils.c:136 msgid "argument specifying columns must be character or numeric" msgstr "指定列的参数必须是字符或者是数值" -#: utils.c:132 -msgid "argument specifying columns specify duplicated column(s)" +#: utils.c:139 +msgid "argument specifying columns received duplicate column(s)" msgstr "指定列的参数指定了重复的列" -#: utils.c:138 +#: utils.c:145 #, c-format msgid "%s: fill argument must be length 1" msgstr "%s:fill参数的长度必须为1" -#: utils.c:171 +#: utils.c:178 #, c-format msgid "%s: fill argument must be numeric" msgstr "%s:fill参数必须为数值类型" -#: utils.c:273 -#, c-format -msgid "Internal error: unsupported type '%s' passed to copyAsPlain()" -msgstr "内部错误:copyAsPlain()不支持类型为'%s'的参数" - -#: utils.c:277 +#: utils.c:284 #, c-format msgid "" "Internal error: type '%s' passed to copyAsPlain() but it seems " @@ -4647,7 +4531,7 @@ msgid "" msgstr "" "内部错误:copyAsPlain()中参数为'%s'类型,但copyMostAttrib() 保留了ALTREP属性" -#: utils.c:312 +#: utils.c:319 #, c-format msgid "Found and copied %d column%s with a shared memory address\n" msgstr "发现并拷贝了具有相同的内存地址的%d列%s\n" diff --git a/src/gsumm.c b/src/gsumm.c index cc2252f6a0..ae1f808163 100644 --- a/src/gsumm.c +++ b/src/gsumm.c @@ -671,7 +671,7 @@ SEXP gmean(SEXP x, SEXP narm) } } break; default: - error(_("Internal error: unsupported type at the end of gmean")); // # nocov + error(_("Internal error: type '%s' not supported in %s"), type2char(TYPEOF(x)), "gmean"); // # nocov } free(s); free(si); free(c); copyMostAttrib(x, ans); diff --git a/src/utils.c b/src/utils.c index 9efd959cd3..5177c76574 100644 --- a/src/utils.c +++ b/src/utils.c @@ -120,7 +120,7 @@ SEXP colnamesInt(SEXP x, SEXP cols, SEXP check_dups) { int *icols = INTEGER(ricols); for (int i=0; inx) || (icols[i]<1)) - error(_("argument specifying received non-existing column(s): cols[%d]=%d"), i+1, icols[i]); // handles NAs also + error(_("argument specifying columns received non-existing column(s): cols[%d]=%d"), i+1, icols[i]); // handles NAs also } } else if (isString(cols)) { SEXP xnames = PROTECT(getAttrib(x, R_NamesSymbol)); protecti++; @@ -136,7 +136,7 @@ SEXP colnamesInt(SEXP x, SEXP cols, SEXP check_dups) { error(_("argument specifying columns must be character or numeric")); } if (LOGICAL(check_dups)[0] && any_duplicated(ricols, FALSE)) - error(_("argument specifying columns specify received duplicate column(s)")); + error(_("argument specifying columns received duplicate column(s)")); UNPROTECT(protecti); return ricols; } @@ -277,7 +277,7 @@ SEXP copyAsPlain(SEXP x) { for (R_xlen_t i=0; i Date: Thu, 12 Mar 2020 11:05:33 +0800 Subject: [PATCH 03/12] semicolons --- src/gsumm.c | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/src/gsumm.c b/src/gsumm.c index ae1f808163..ee1b79da72 100644 --- a/src/gsumm.c +++ b/src/gsumm.c @@ -647,7 +647,7 @@ SEXP gmean(SEXP x, SEXP narm) } break; default: free(s); free(c); // # nocov because it already stops at gsum, remove nocov if gmean will support a type that gsum wont - error(_("Type '%s' is not supported by GForce %s. Either add the prefix %s or turn off GForce optimization using options(datatable.optimize=1)"), type2char(TYPEOF(x)), "mean (gmean)", "base::mean(.)") // # nocov + error(_("Type '%s' is not supported by GForce %s. Either add the prefix %s or turn off GForce optimization using options(datatable.optimize=1)"), type2char(TYPEOF(x)), "mean (gmean)", "base::mean(.)"); // # nocov } switch(TYPEOF(x)) { case LGLSXP: case INTSXP: case REALSXP: { @@ -791,7 +791,7 @@ SEXP gmin(SEXP x, SEXP narm) error(_("Type 'complex' has no well-defined min")); break; default: - error(_("Type '%s' is not supported by GForce %s. Either add the prefix %s or turn off GForce optimization using options(datatable.optimize=1)"), type2char(TYPEOF(x)), "min (gmin)", "base::min(.)") + error(_("Type '%s' is not supported by GForce %s. Either add the prefix %s or turn off GForce optimization using options(datatable.optimize=1)"), type2char(TYPEOF(x)), "min (gmin)", "base::min(.)"); } copyMostAttrib(x, ans); // all but names,dim and dimnames. And if so, we want a copy here, not keepattr's SET_ATTRIB. UNPROTECT(protecti); // ans + maybe 1 coerced ans @@ -937,7 +937,7 @@ SEXP gmax(SEXP x, SEXP narm) error(_("Type 'complex' has no well-defined max")); break; default: - error(_("Type '%s' is not supported by GForce %s. Either add the prefix %s or turn off GForce optimization using options(datatable.optimize=1)"), type2char(TYPEOF(x)), "max (gmax)", "base::max(.)") + error(_("Type '%s' is not supported by GForce %s. Either add the prefix %s or turn off GForce optimization using options(datatable.optimize=1)"), type2char(TYPEOF(x)), "max (gmax)", "base::max(.)"); } copyMostAttrib(x, ans); // all but names,dim and dimnames. And if so, we want a copy here, not keepattr's SET_ATTRIB. UNPROTECT(protecti); @@ -989,7 +989,7 @@ SEXP gmedian(SEXP x, SEXP narmArg) { }} break; default: - error(_("Type '%s' is not supported by GForce %s. Either add the prefix %s or turn off GForce optimization using options(datatable.optimize=1)"), type2char(TYPEOF(x)), "median (gmedian)", "stats::median(.)") + error(_("Type '%s' is not supported by GForce %s. Either add the prefix %s or turn off GForce optimization using options(datatable.optimize=1)"), type2char(TYPEOF(x)), "median (gmedian)", "stats::median(.)"); } if (!isInt64) copyMostAttrib(x, ans); // else the integer64 class needs to be dropped since double is always returned by gmedian @@ -1070,7 +1070,7 @@ SEXP glast(SEXP x) { } break; default: - error(_("Type '%s' is not supported by GForce %s. Either add the prefix %s or turn off GForce optimization using options(datatable.optimize=1)"), type2char(TYPEOF(x)), "tail (gtail)", "utils::tail(.)") + error(_("Type '%s' is not supported by GForce %s. Either add the prefix %s or turn off GForce optimization using options(datatable.optimize=1)"), type2char(TYPEOF(x)), "tail (gtail)", "utils::tail(.)"); } copyMostAttrib(x, ans); UNPROTECT(1); @@ -1150,7 +1150,7 @@ SEXP gfirst(SEXP x) { } break; default: - error(_("Type '%s' is not supported by GForce %s. Either add the prefix %s or turn off GForce optimization using options(datatable.optimize=1)"), type2char(TYPEOF(x)), "head (ghead)", "utils::head(.)") + error(_("Type '%s' is not supported by GForce %s. Either add the prefix %s or turn off GForce optimization using options(datatable.optimize=1)"), type2char(TYPEOF(x)), "head (ghead)", "utils::head(.)"); } copyMostAttrib(x, ans); UNPROTECT(1); @@ -1247,7 +1247,7 @@ SEXP gnthvalue(SEXP x, SEXP valArg) { } break; default: - error(_("Type '%s' is not supported by GForce %s. Either add the prefix %s or turn off GForce optimization using options(datatable.optimize=1)"), type2char(TYPEOF(x)), "subset `[` (gnthvalue)", "utils::head(.)") + error(_("Type '%s' is not supported by GForce %s. Either add the prefix %s or turn off GForce optimization using options(datatable.optimize=1)"), type2char(TYPEOF(x)), "subset `[` (gnthvalue)", "utils::head(.)"); } copyMostAttrib(x, ans); UNPROTECT(1); @@ -1379,9 +1379,9 @@ SEXP gvarsd1(SEXP x, SEXP narm, Rboolean isSD) break; default: if (!isSD) { - error(_("Type '%s' is not supported by GForce %s. Either add the prefix %s or turn off GForce optimization using options(datatable.optimize=1)"), type2char(TYPEOF(x)), "var (gvar)", "stats::var(.)") + error(_("Type '%s' is not supported by GForce %s. Either add the prefix %s or turn off GForce optimization using options(datatable.optimize=1)"), type2char(TYPEOF(x)), "var (gvar)", "stats::var(.)"); } else { - error(_("Type '%s' is not supported by GForce %s. Either add the prefix %s or turn off GForce optimization using options(datatable.optimize=1)"), type2char(TYPEOF(x)), "sd (gsd)", "stats::sd(.)") + error(_("Type '%s' is not supported by GForce %s. Either add the prefix %s or turn off GForce optimization using options(datatable.optimize=1)"), type2char(TYPEOF(x)), "sd (gsd)", "stats::sd(.)"); } } // no copyMostAttrib(x, ans) since class (e.g. Date) unlikely applicable to sd/var @@ -1443,7 +1443,7 @@ SEXP gprod(SEXP x, SEXP narm) break; default: free(s); - error(_("Type '%s' is not supported by GForce %s. Either add the prefix %s or turn off GForce optimization using options(datatable.optimize=1)"), type2char(TYPEOF(x)), "prod (gprod)", "base::prod(.)") + error(_("Type '%s' is not supported by GForce %s. Either add the prefix %s or turn off GForce optimization using options(datatable.optimize=1)"), type2char(TYPEOF(x)), "prod (gprod)", "base::prod(.)"); } free(s); copyMostAttrib(x, ans); From 99c1e08a7a953a7a07f4edad116553438123b1f2 Mon Sep 17 00:00:00 2001 From: Michael Chirico Date: Fri, 13 Mar 2020 10:41:58 +0800 Subject: [PATCH 04/12] some more consolidation --- inst/po/en@quot/LC_MESSAGES/data.table.mo | Bin 135030 -> 132868 bytes inst/po/zh_CN/LC_MESSAGES/data.table.mo | Bin 133656 -> 131334 bytes po/data.table.pot | 116 ++++--------------- po/zh_CN.po | 132 ++++------------------ src/frollR.c | 8 +- src/gsumm.c | 16 +-- src/init.c | 22 ++-- src/nafill.c | 5 +- 8 files changed, 69 insertions(+), 230 deletions(-) diff --git a/inst/po/en@quot/LC_MESSAGES/data.table.mo b/inst/po/en@quot/LC_MESSAGES/data.table.mo index 62f5996b8d53d2b1430bc76e4a6be514868f93fb..dbb324892c6cb540f2b621b5147d6e126b87748d 100644 GIT binary patch delta 18488 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

4#CM>!1Q2Ne3x=%Y>QV>W1wO|(*vzA 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 Y)Ynhf4<4ptf=2q*1+{IR=qBX*KTcABEdT%j diff --git a/po/data.table.pot b/po/data.table.pot index 6b1bc33627..450472380b 100644 --- a/po/data.table.pot +++ b/po/data.table.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: data.table 1.12.9\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-03-12 10:56+0800\n" +"POT-Creation-Date: 2020-03-13 10:35+0800\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -2746,10 +2746,12 @@ msgid "" "NA values use hasNA TRUE, otherwise leave it as default NA" msgstr "" -#: frollR.c:119 frollR.c:275 +#: frollR.c:119 frollR.c:151 frollR.c:185 frollR.c:275 nafill.c:159 +#: nafill.c:191 +#, c-format msgid "" -"Internal error: invalid align argument in rolling function, should have been " -"caught before. please report to data.table issue tracker." +"Internal error: invalid %s argument in %s function should have been caught " +"earlier. Please report to the data.table issue tracker." msgstr "" #: frollR.c:122 @@ -2777,12 +2779,6 @@ msgid "" "to number of observations provided in 'x'" msgstr "" -#: frollR.c:151 -msgid "" -"Internal error: invalid fun argument in rolling function, should have been " -"caught before. please report to data.table issue tracker." -msgstr "" - #: frollR.c:155 frollR.c:279 nafill.c:162 shift.c:21 msgid "fill must be a vector of length 1" msgstr "" @@ -2791,12 +2787,6 @@ msgstr "" msgid "fill must be numeric" msgstr "" -#: frollR.c:185 -msgid "" -"Internal error: invalid algo argument in rolling function, should have been " -"caught before. please report to data.table issue tracker." -msgstr "" - #: frollR.c:190 #, c-format msgid "Internal error: badaptive=%d but ik is not integer" @@ -3173,13 +3163,15 @@ msgstr "" msgid "%.3fs\n" msgstr "" -#: gsumm.c:345 -msgid "sum is not meaningful for factors." +#: gsumm.c:345 gsumm.c:579 gsumm.c:688 gsumm.c:807 gsumm.c:952 gsumm.c:1263 +#: gsumm.c:1404 +#, c-format +msgid "%s is not meaningful for factors." msgstr "" #: gsumm.c:349 #, c-format -msgid "This gsum took (narm=%s) ... " +msgid "This gsum (narm=%s) took ... " msgstr "" #: gsumm.c:350 gsumm.c:606 gsumm.c:693 gsumm.c:812 gsumm.c:955 gsumm.c:1005 @@ -3209,10 +3201,6 @@ msgid "" "you're looking for 'DT[,lapply(.SD,mean),by=,.SDcols=]'. See ?data.table." msgstr "" -#: gsumm.c:579 -msgid "mean is not meaningful for factors." -msgstr "" - #: gsumm.c:599 #, c-format msgid "Internal error: gsum returned type '%s'. typeof(x) is '%s'" @@ -3246,10 +3234,6 @@ msgid "" "likely, you may be looking for 'DT[,lapply(.SD,min),by=,.SDcols=]'" msgstr "" -#: gsumm.c:688 -msgid "min is not meaningful for factors." -msgstr "" - #: gsumm.c:717 gsumm.c:850 msgid "" "No non-missing values found in at least one group. Coercing to numeric type " @@ -3280,10 +3264,6 @@ msgid "" "likely, you may be looking for 'DT[,lapply(.SD,max),by=,.SDcols=]'" msgstr "" -#: gsumm.c:807 -msgid "max is not meaningful for factors." -msgstr "" - #: gsumm.c:930 msgid "" "No non-missing values found in at least one group. Returning '-Inf' for such " @@ -3303,10 +3283,6 @@ msgid "" "by=,.SDcols=]'" msgstr "" -#: gsumm.c:952 -msgid "median is not meaningful for factors." -msgstr "" - #: gsumm.c:1161 msgid "" "Internal error, gtail is only implemented for n=1. This should have been " @@ -3336,10 +3312,6 @@ msgid "" "to do this." msgstr "" -#: gsumm.c:1263 -msgid "var/sd is not meaningful for factors." -msgstr "" - #: gsumm.c:1403 msgid "" "GForce prod can only be applied to columns, not .SD or similar. To multiply " @@ -3348,10 +3320,6 @@ msgid "" "likely, you may be looking for 'DT[,lapply(.SD,prod),by=,.SDcols=]'" msgstr "" -#: gsumm.c:1404 -msgid "prod is not meaningful for factors." -msgstr "" - #: gsumm.c:1411 #, c-format msgid "Unable to allocate %d * %d bytes for gprod" @@ -3439,6 +3407,10 @@ msgid "" "architecture greater than 64bit yet." msgstr "" +#: init.c:246 +msgid "... failed. Please forward this message to maintainer('data.table')." +msgstr "" + #: init.c:247 #, c-format msgid "Checking NA_INTEGER [%d] == INT_MIN [%d] %s" @@ -3449,19 +3421,10 @@ msgstr "" msgid "Checking NA_INTEGER [%d] == NA_LOGICAL [%d] %s" msgstr "" -#: init.c:249 +#: init.c:249 init.c:250 init.c:252 init.c:255 init.c:256 init.c:257 init.c:258 +#: init.c:259 init.c:260 init.c:261 #, c-format -msgid "Checking sizeof(int) [%d] is 4 %s" -msgstr "" - -#: init.c:250 -#, c-format -msgid "Checking sizeof(double) [%d] is 8 %s" -msgstr "" - -#: init.c:252 -#, c-format -msgid "Checking sizeof(long long) [%d] is 8 %s" +msgid "Checking sizeof(%s) [%d] is %d %s" msgstr "" #: init.c:253 @@ -3474,41 +3437,6 @@ msgstr "" msgid "Checking sizeof(SEXP) [%d] == sizeof(pointer) [%d] %s" msgstr "" -#: init.c:255 -#, c-format -msgid "Checking sizeof(uint64_t) [%d] is 8 %s" -msgstr "" - -#: init.c:256 -#, c-format -msgid "Checking sizeof(int64_t) [%d] is 8 %s" -msgstr "" - -#: init.c:257 -#, c-format -msgid "Checking sizeof(signed char) [%d] is 1 %s" -msgstr "" - -#: init.c:258 -#, c-format -msgid "Checking sizeof(int8_t) [%d] is 1 %s" -msgstr "" - -#: init.c:259 -#, c-format -msgid "Checking sizeof(uint8_t) [%d] is 1 %s" -msgstr "" - -#: init.c:260 -#, c-format -msgid "Checking sizeof(int16_t) [%d] is 2 %s" -msgstr "" - -#: init.c:261 -#, c-format -msgid "Checking sizeof(uint16_t) [%d] is 2 %s" -msgstr "" - #: init.c:264 #, c-format msgid "Checking LENGTH(allocVector(INTSXP,2)) [%d] is 2 %s" @@ -3595,13 +3523,7 @@ msgstr "" msgid "'x' argument must be numeric type, or list/data.table of numeric types" msgstr "" -#: nafill.c:159 nafill.c:190 -msgid "" -"Internal error: invalid type argument in nafillR function, should have been " -"caught before. Please report to data.table issue tracker." -msgstr "" - -#: nafill.c:206 +#: nafill.c:207 #, c-format msgid "%s: parallel processing of %d column(s) took %.3fs\n" msgstr "" diff --git a/po/zh_CN.po b/po/zh_CN.po index a4eb0f96c8..d794a99653 100644 --- a/po/zh_CN.po +++ b/po/zh_CN.po @@ -2,7 +2,7 @@ msgid "" msgstr "" "Project-Id-Version: data.table 1.12.5\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-03-12 10:56+0800\n" +"POT-Creation-Date: 2020-03-13 10:35+0800\n" "PO-Revision-Date: 2019-11-18 00:26-04\n" "Last-Translator: Yuhang Chen \n" "Language-Team: Mandarin\n" @@ -2952,13 +2952,15 @@ msgstr "" "同时使用 hasNA FALSE 和 na.rm TRUE 没有意义, 如果明确有NA值, 那就用 hasNA " "TRUE, 在其他情况可以让它保留默认值NA" -#: frollR.c:119 frollR.c:275 +#: frollR.c:119 frollR.c:151 frollR.c:185 frollR.c:275 nafill.c:159 +#: nafill.c:191 +#, c-format msgid "" -"Internal error: invalid align argument in rolling function, should have been " -"caught before. please report to data.table issue tracker." +"Internal error: invalid %s argument in %s function should have been caught " +"earlier. Please report to the data.table issue tracker." msgstr "" -"内部错误: 在 rolling 函数内无效的 align 参数, 理应在更早阶段排除请向data." -"table issue tracker报告" +"内部错误:在 %s 函数内无效的 %s 参数, 该错误理应已被捕获,请向data.table" +"的issue通道报告" #: frollR.c:122 msgid "" @@ -2987,14 +2989,6 @@ msgid "" "to number of observations provided in 'x'" msgstr "'n' 列表中整数向量的长度必须等于 'x' 中的观察数量" -#: frollR.c:151 -msgid "" -"Internal error: invalid fun argument in rolling function, should have been " -"caught before. please report to data.table issue tracker." -msgstr "" -"内部错误: 在 rolling 函数中无效的 fun 参数, 理应在更早阶段排除请向data.table " -"issue tracker报告" - #: frollR.c:155 frollR.c:279 nafill.c:162 shift.c:21 msgid "fill must be a vector of length 1" msgstr "fill 必须是长度为1的向量" @@ -3003,14 +2997,6 @@ msgstr "fill 必须是长度为1的向量" msgid "fill must be numeric" msgstr "fill 必须是数值型" -#: frollR.c:185 -msgid "" -"Internal error: invalid algo argument in rolling function, should have been " -"caught before. please report to data.table issue tracker." -msgstr "" -"内部错误: 在 rolling 函数内无效的 algo 参数, 理应在更早阶段排除请向data." -"table issue tracker报告" - #: frollR.c:190 #, c-format msgid "Internal error: badaptive=%d but ik is not integer" @@ -3413,14 +3399,16 @@ msgstr "gather 已支持 INTSXP,REALSXP 和 CPLXSXP,但不支持 '%s'" msgid "%.3fs\n" msgstr "%.3fs\n" -#: gsumm.c:345 -msgid "sum is not meaningful for factors." -msgstr "因子的和没有意义。" +#: gsumm.c:345 gsumm.c:579 gsumm.c:688 gsumm.c:807 gsumm.c:952 gsumm.c:1263 +#: gsumm.c:1404 +#, c-format +msgid "%s is not meaningful for factors." +msgstr "因子的 %s 没有意义。" #: gsumm.c:349 #, c-format -msgid "This gsum took (narm=%s) ... " -msgstr "gsum 占用了 (narm=%s) ..." +msgid "This gsum (narm=%s) took ... " +msgstr "gsum (narm=%s) 占用了..." #: gsumm.c:350 gsumm.c:606 gsumm.c:693 gsumm.c:812 gsumm.c:955 gsumm.c:1005 #: gsumm.c:1085 gsumm.c:1176 gsumm.c:1266 gsumm.c:1409 @@ -3455,10 +3443,6 @@ msgstr "" "GForce 求平均值仅适用于列,而不能用于 .SD 或其它。或许你在查找 'DT[,lapply(." "SD,mean),by=,.SDcols=]'。参见 ?data.table 。" -#: gsumm.c:579 -msgid "mean is not meaningful for factors." -msgstr "因子的平均值没有意义" - #: gsumm.c:599 #, c-format msgid "Internal error: gsum returned type '%s'. typeof(x) is '%s'" @@ -3496,10 +3480,6 @@ msgstr "" "optimize=1) 关闭 GForce 优化。你更像是在查找 'DT[,lapply(.SD,min),by=,." "SDcols=]'" -#: gsumm.c:688 -msgid "min is not meaningful for factors." -msgstr "因子的最小值没有意义。" - #: gsumm.c:717 gsumm.c:850 msgid "" "No non-missing values found in at least one group. Coercing to numeric type " @@ -3538,10 +3518,6 @@ msgstr "" "options(datatable.optimize=1) 来关掉GForce优化。更有可能的是,你真正想要使用" "的命令是 'DT[,lapply(.SD,max),by=,.SDcols=]'" -#: gsumm.c:807 -msgid "max is not meaningful for factors." -msgstr "因子的最大值是没有意义的" - #: gsumm.c:930 msgid "" "No non-missing values found in at least one group. Returning '-Inf' for such " @@ -3566,10 +3542,6 @@ msgstr "" "options(datatable.optimize=1) 来关掉GForce优化。更有可能的是,你真正想要使用" "的命令是 'DT[,lapply(.SD,median),by=,.SDcols=]'" -#: gsumm.c:952 -msgid "median is not meaningful for factors." -msgstr "因子的中位值没有意义。" - #: gsumm.c:1161 msgid "" "Internal error, gtail is only implemented for n=1. This should have been " @@ -3609,10 +3581,6 @@ msgstr "" "options(datatable.optimize=1) 关闭 GForce优化。另外,若仅需获得对角线元素,最" "佳的方式是使用'DT[,lapply(.SD,var),by=,.SDcols=]'。" -#: gsumm.c:1263 -msgid "var/sd is not meaningful for factors." -msgstr "无法对因子类型使用 var/sd。" - #: gsumm.c:1403 msgid "" "GForce prod can only be applied to columns, not .SD or similar. To multiply " @@ -3624,10 +3592,6 @@ msgstr "" "所有的元素,要么添加前缀base::prod(.SD), 要么使用选项datatable.optimize=1来关" "闭GForce优化。你可以试试'DT[,lapply(.SD,prod),by=,.SDcols=]'" -#: gsumm.c:1404 -msgid "prod is not meaningful for factors." -msgstr "prod对于因子是没有意义的" - #: gsumm.c:1411 #, c-format msgid "Unable to allocate %d * %d bytes for gprod" @@ -3717,6 +3681,10 @@ msgid "" "architecture greater than 64bit yet." msgstr "指针是%d个字节,大于8。我们尚未在大于64位的任何体系结构上进行测试。" +#: init.c:246 +msgid "... failed. Please forward this message to maintainer('data.table')." +msgstr "" + #: init.c:247 #, c-format msgid "Checking NA_INTEGER [%d] == INT_MIN [%d] %s" @@ -3727,20 +3695,11 @@ msgstr "检查NA_INTEGER [%d] == INT_MIN [%d] %s" msgid "Checking NA_INTEGER [%d] == NA_LOGICAL [%d] %s" msgstr "检查Checking NA_INTEGER [%d] == NA_LOGICAL [%d] %s" -#: init.c:249 +#: init.c:249 init.c:250 init.c:252 init.c:255 init.c:256 init.c:257 init.c:258 +#: init.c:259 init.c:260 init.c:261 #, c-format -msgid "Checking sizeof(int) [%d] is 4 %s" -msgstr "检查sizeof(int)[%d]是否为4 %s" - -#: init.c:250 -#, c-format -msgid "Checking sizeof(double) [%d] is 8 %s" -msgstr "检查 sizeof(double) [%d]是否为8 %s" - -#: init.c:252 -#, c-format -msgid "Checking sizeof(long long) [%d] is 8 %s" -msgstr "检查sizeof(long long) [%d]是否为8 %s" +msgid "Checking sizeof(%s) [%d] is %d %s" +msgstr "检查sizeof(%s)[%d]是否为%d %s" #: init.c:253 #, c-format @@ -3752,41 +3711,6 @@ msgstr "检查sizeof(pointer) [%d]是否为4 或者 8 %s" msgid "Checking sizeof(SEXP) [%d] == sizeof(pointer) [%d] %s" msgstr "检查sizeof(SEXP) [%d] == sizeof(pointer) [%d] %s" -#: init.c:255 -#, c-format -msgid "Checking sizeof(uint64_t) [%d] is 8 %s" -msgstr "检查 sizeof(uint64_t) [%d]是否为8 %s" - -#: init.c:256 -#, c-format -msgid "Checking sizeof(int64_t) [%d] is 8 %s" -msgstr "检查sizeof(int64_t) [%d]是否为8 %s" - -#: init.c:257 -#, c-format -msgid "Checking sizeof(signed char) [%d] is 1 %s" -msgstr "检查sizeof(signed char) [%d]是否为1 %s" - -#: init.c:258 -#, c-format -msgid "Checking sizeof(int8_t) [%d] is 1 %s" -msgstr "检查sizeof(int8_t) [%d]是否为1 %s" - -#: init.c:259 -#, c-format -msgid "Checking sizeof(uint8_t) [%d] is 1 %s" -msgstr "检查sizeof(uint8_t) [%d]是否为1 %s" - -#: init.c:260 -#, c-format -msgid "Checking sizeof(int16_t) [%d] is 2 %s" -msgstr "检查sizeof(int16_t) [%d]是否为2 %s" - -#: init.c:261 -#, c-format -msgid "Checking sizeof(uint16_t) [%d] is 2 %s" -msgstr "检查sizeof(uint16_t) [%d]是否为2 %s" - #: init.c:264 #, c-format msgid "Checking LENGTH(allocVector(INTSXP,2)) [%d] is 2 %s" @@ -3873,15 +3797,7 @@ msgstr "参数'x'是一个原子型矢量,原位的更新只为list 或 data.t msgid "'x' argument must be numeric type, or list/data.table of numeric types" msgstr "参数'x'必须是数字类型,或者是数字类型的list/data.table" -#: nafill.c:159 nafill.c:190 -msgid "" -"Internal error: invalid type argument in nafillR function, should have been " -"caught before. Please report to data.table issue tracker." -msgstr "" -"内部错误:函数 nafillR 中有无效类型的参数, 该错误理应已被捕获,请向data.table" -"的issue通道报告" - -#: nafill.c:206 +#: nafill.c:207 #, c-format msgid "%s: parallel processing of %d column(s) took %.3fs\n" msgstr "%s : 并行处理 %d 列, 用时 %.3fs\n" diff --git a/src/frollR.c b/src/frollR.c index 46ddea0dfa..5212af5dd8 100644 --- a/src/frollR.c +++ b/src/frollR.c @@ -116,7 +116,7 @@ SEXP frollfunR(SEXP fun, SEXP obj, SEXP k, SEXP fill, SEXP algo, SEXP align, SEX else if (!strcmp(CHAR(STRING_ELT(align, 0)), "left")) ialign = -1; else - error(_("Internal error: invalid align argument in rolling function, should have been caught before. please report to data.table issue tracker.")); // # nocov + error(_("Internal error: invalid %s argument in %s function should have been caught earlier. Please report to the data.table issue tracker."), "align", "rolling"); // # nocov if (badaptive && ialign!=1) error(_("using adaptive TRUE and align argument different than 'right' is not implemented")); @@ -148,7 +148,7 @@ SEXP frollfunR(SEXP fun, SEXP obj, SEXP k, SEXP fill, SEXP algo, SEXP align, SEX } else if (!strcmp(CHAR(STRING_ELT(fun, 0)), "sum")) { sfun = SUM; } else { - error(_("Internal error: invalid fun argument in rolling function, should have been caught before. please report to data.table issue tracker.")); // # nocov + error(_("Internal error: invalid %s argument in %s function should have been caught earlier. Please report to the data.table issue tracker."), "fun", "rolling"); // # nocov } if (length(fill) != 1) @@ -182,7 +182,7 @@ SEXP frollfunR(SEXP fun, SEXP obj, SEXP k, SEXP fill, SEXP algo, SEXP align, SEX else if (!strcmp(CHAR(STRING_ELT(algo, 0)), "exact")) ialgo = 1; // exact = 1 else - error(_("Internal error: invalid algo argument in rolling function, should have been caught before. please report to data.table issue tracker.")); // # nocov + error(_("Internal error: invalid %s argument in %s function should have been caught earlier. Please report to the data.table issue tracker."), "algo", "rolling"); // # nocov int* iik = NULL; if (!badaptive) { @@ -272,7 +272,7 @@ SEXP frollapplyR(SEXP fun, SEXP obj, SEXP k, SEXP fill, SEXP align, SEXP rho) { } else if (!strcmp(CHAR(STRING_ELT(align, 0)), "left")) { ialign = -1; } else { - error(_("Internal error: invalid align argument in rolling function, should have been caught before. please report to data.table issue tracker.")); // # nocov + error(_("Internal error: invalid %s argument in %s function should have been caught earlier. Please report to the data.table issue tracker."), "align", "rolling"); // # nocov } if (length(fill) != 1) diff --git a/src/gsumm.c b/src/gsumm.c index ee1b79da72..0313ed19c3 100644 --- a/src/gsumm.c +++ b/src/gsumm.c @@ -342,11 +342,11 @@ SEXP gsum(SEXP x, SEXP narmArg, SEXP warnOverflowArg) if (!isLogical(narmArg) || LENGTH(narmArg)!=1 || LOGICAL(narmArg)[0]==NA_LOGICAL) error(_("na.rm must be TRUE or FALSE")); const bool narm = LOGICAL(narmArg)[0]; const bool warnOverflow = LOGICAL(warnOverflowArg)[0]; - if (inherits(x, "factor")) error(_("sum is not meaningful for factors.")); + if (inherits(x, "factor")) error(_("%s is not meaningful for factors."), "sum"); const int n = (irowslen == -1) ? length(x) : irowslen; double started = wallclock(); const bool verbose=GetVerbose(); - if (verbose) Rprintf(_("This gsum took (narm=%s) ... "), narm?"TRUE":"FALSE"); + if (verbose) Rprintf(_("This gsum (narm=%s) took ... "), narm?"TRUE":"FALSE"); if (nrow != n) error(_("nrow [%d] != length(x) [%d] in %s"), nrow, n, "gsum"); bool anyNA=false; SEXP ans; @@ -576,7 +576,7 @@ SEXP gmean(SEXP x, SEXP narm) //clock_t start = clock(); if (!isLogical(narm) || LENGTH(narm)!=1 || LOGICAL(narm)[0]==NA_LOGICAL) error(_("na.rm must be TRUE or FALSE")); if (!isVectorAtomic(x)) error(_("GForce mean can only be applied to columns, not .SD or similar. Likely you're looking for 'DT[,lapply(.SD,mean),by=,.SDcols=]'. See ?data.table.")); - if (inherits(x, "factor")) error(_("mean is not meaningful for factors.")); + if (inherits(x, "factor")) error(_("%s is not meaningful for factors."), "mean"); if (!LOGICAL(narm)[0]) { int protecti=0; ans = PROTECT(gsum(x, narm, /*#986, warnOverflow=*/ScalarLogical(FALSE))); protecti++; @@ -685,7 +685,7 @@ SEXP gmin(SEXP x, SEXP narm) { if (!isLogical(narm) || LENGTH(narm)!=1 || LOGICAL(narm)[0]==NA_LOGICAL) error(_("na.rm must be TRUE or FALSE")); if (!isVectorAtomic(x)) error(_("GForce min can only be applied to columns, not .SD or similar. To find min of all items in a list such as .SD, either add the prefix base::min(.SD) or turn off GForce optimization using options(datatable.optimize=1). More likely, you may be looking for 'DT[,lapply(.SD,min),by=,.SDcols=]'")); - if (inherits(x, "factor") && !inherits(x, "ordered")) error(_("min is not meaningful for factors.")); + if (inherits(x, "factor") && !inherits(x, "ordered")) error(_("%s is not meaningful for factors."), "min"); R_len_t i, ix, thisgrp=0; int n = (irowslen == -1) ? length(x) : irowslen; //clock_t start = clock(); @@ -804,7 +804,7 @@ SEXP gmax(SEXP x, SEXP narm) { if (!isLogical(narm) || LENGTH(narm)!=1 || LOGICAL(narm)[0]==NA_LOGICAL) error(_("na.rm must be TRUE or FALSE")); if (!isVectorAtomic(x)) error(_("GForce max can only be applied to columns, not .SD or similar. To find max of all items in a list such as .SD, either add the prefix base::max(.SD) or turn off GForce optimization using options(datatable.optimize=1). More likely, you may be looking for 'DT[,lapply(.SD,max),by=,.SDcols=]'")); - if (inherits(x, "factor") && !inherits(x, "ordered")) error(_("max is not meaningful for factors.")); + if (inherits(x, "factor") && !inherits(x, "ordered")) error(_("%s is not meaningful for factors."), "max"); R_len_t i, ix, thisgrp=0; int n = (irowslen == -1) ? length(x) : irowslen; //clock_t start = clock(); @@ -949,7 +949,7 @@ SEXP gmax(SEXP x, SEXP narm) SEXP gmedian(SEXP x, SEXP narmArg) { if (!isLogical(narmArg) || LENGTH(narmArg)!=1 || LOGICAL(narmArg)[0]==NA_LOGICAL) error(_("na.rm must be TRUE or FALSE")); if (!isVectorAtomic(x)) error(_("GForce median can only be applied to columns, not .SD or similar. To find median of all items in a list such as .SD, either add the prefix stats::median(.SD) or turn off GForce optimization using options(datatable.optimize=1). More likely, you may be looking for 'DT[,lapply(.SD,median),by=,.SDcols=]'")); - if (inherits(x, "factor")) error(_("median is not meaningful for factors.")); + if (inherits(x, "factor")) error(_("%s is not meaningful for factors."), "median"); const bool isInt64 = INHERITS(x, char_integer64), narm = LOGICAL(narmArg)[0]; int n = (irowslen == -1) ? length(x) : irowslen; if (nrow != n) error(_("nrow [%d] != length(x) [%d] in %s"), nrow, n, "gmedian"); @@ -1260,7 +1260,7 @@ SEXP gvarsd1(SEXP x, SEXP narm, Rboolean isSD) { if (!isLogical(narm) || LENGTH(narm)!=1 || LOGICAL(narm)[0]==NA_LOGICAL) error(_("na.rm must be TRUE or FALSE")); if (!isVectorAtomic(x)) error(_("GForce var/sd can only be applied to columns, not .SD or similar. For the full covariance matrix of all items in a list such as .SD, either add the prefix stats::var(.SD) (or stats::sd(.SD)) or turn off GForce optimization using options(datatable.optimize=1). Alternatively, if you only need the diagonal elements, 'DT[,lapply(.SD,var),by=,.SDcols=]' is the optimized way to do this.")); - if (inherits(x, "factor")) error(_("var/sd is not meaningful for factors.")); + if (inherits(x, "factor")) error(_("%s is not meaningful for factors."), isSD ? "sd" : "var"); long double m, s, v; R_len_t i, j, ix, thisgrpsize = 0, n = (irowslen == -1) ? length(x) : irowslen; if (nrow != n) error(_("nrow [%d] != length(x) [%d] in %s"), nrow, n, "gvar"); @@ -1401,7 +1401,7 @@ SEXP gprod(SEXP x, SEXP narm) { if (!isLogical(narm) || LENGTH(narm)!=1 || LOGICAL(narm)[0]==NA_LOGICAL) error(_("na.rm must be TRUE or FALSE")); if (!isVectorAtomic(x)) error(_("GForce prod can only be applied to columns, not .SD or similar. To multiply all items in a list such as .SD, either add the prefix base::prod(.SD) or turn off GForce optimization using options(datatable.optimize=1). More likely, you may be looking for 'DT[,lapply(.SD,prod),by=,.SDcols=]'")); - if (inherits(x, "factor")) error(_("prod is not meaningful for factors.")); + if (inherits(x, "factor")) error(_("%s is not meaningful for factors."), "prod"); int i, ix, thisgrp; int n = (irowslen == -1) ? length(x) : irowslen; //clock_t start = clock(); diff --git a/src/init.c b/src/init.c index aed2da3dbd..75007eff31 100644 --- a/src/init.c +++ b/src/init.c @@ -243,22 +243,22 @@ void attribute_visible R_init_datatable(DllInfo *info) R_registerRoutines(info, NULL, callMethods, NULL, externalMethods); R_useDynamicSymbols(info, FALSE); setSizes(); - const char *msg = "... failed. Please forward this message to maintainer('data.table')."; + const char *msg = _("... failed. Please forward this message to maintainer('data.table')."); if ((int)NA_INTEGER != (int)INT_MIN) error(_("Checking NA_INTEGER [%d] == INT_MIN [%d] %s"), NA_INTEGER, INT_MIN, msg); if ((int)NA_INTEGER != (int)NA_LOGICAL) error(_("Checking NA_INTEGER [%d] == NA_LOGICAL [%d] %s"), NA_INTEGER, NA_LOGICAL, msg); - if (sizeof(int) != 4) error(_("Checking sizeof(int) [%d] is 4 %s"), sizeof(int), msg); - if (sizeof(double) != 8) error(_("Checking sizeof(double) [%d] is 8 %s"), sizeof(double), msg); // 8 on both 32bit and 64bit + if (sizeof(int) != 4) error(_("Checking sizeof(%s) [%d] is %d %s"), "int", sizeof(int), 4, msg); + if (sizeof(double) != 8) error(_("Checking sizeof(%s) [%d] is %d %s"), "double", sizeof(double), 8, msg); // 8 on both 32bit and 64bit // alignof not available in C99: if (alignof(double) != 8) error(_("Checking alignof(double) [%d] is 8 %s"), alignof(double), msg); // 8 on both 32bit and 64bit - if (sizeof(long long) != 8) error(_("Checking sizeof(long long) [%d] is 8 %s"), sizeof(long long), msg); + if (sizeof(long long) != 8) error(_("Checking sizeof(%s) [%d] is %d %s"), "long long", sizeof(long long), 8, msg); if (sizeof(char *) != 4 && sizeof(char *) != 8) error(_("Checking sizeof(pointer) [%d] is 4 or 8 %s"), sizeof(char *), msg); if (sizeof(SEXP) != sizeof(char *)) error(_("Checking sizeof(SEXP) [%d] == sizeof(pointer) [%d] %s"), sizeof(SEXP), sizeof(char *), msg); - if (sizeof(uint64_t) != 8) error(_("Checking sizeof(uint64_t) [%d] is 8 %s"), sizeof(uint64_t), msg); - if (sizeof(int64_t) != 8) error(_("Checking sizeof(int64_t) [%d] is 8 %s"), sizeof(int64_t), msg); - if (sizeof(signed char) != 1) error(_("Checking sizeof(signed char) [%d] is 1 %s"), sizeof(signed char), msg); - if (sizeof(int8_t) != 1) error(_("Checking sizeof(int8_t) [%d] is 1 %s"), sizeof(int8_t), msg); - if (sizeof(uint8_t) != 1) error(_("Checking sizeof(uint8_t) [%d] is 1 %s"), sizeof(uint8_t), msg); - if (sizeof(int16_t) != 2) error(_("Checking sizeof(int16_t) [%d] is 2 %s"), sizeof(int16_t), msg); - if (sizeof(uint16_t) != 2) error(_("Checking sizeof(uint16_t) [%d] is 2 %s"), sizeof(uint16_t), msg); + if (sizeof(uint64_t) != 8) error(_("Checking sizeof(%s) [%d] is %d %s"), "uint64_t", sizeof(uint64_t), 8, msg); + if (sizeof(int64_t) != 8) error(_("Checking sizeof(%s) [%d] is %d %s"), "int64_t", sizeof(int64_t), 8, msg); + if (sizeof(signed char) != 1) error(_("Checking sizeof(%s) [%d] is %d %s"), "signed char", sizeof(signed char), 1, msg); + if (sizeof(int8_t) != 1) error(_("Checking sizeof(%s) [%d] is %d %s"), "int8_t", sizeof(int8_t), 1, msg); + if (sizeof(uint8_t) != 1) error(_("Checking sizeof(%s) [%d] is %d %s"), "uint8_t", sizeof(uint8_t), 1, msg); + if (sizeof(int16_t) != 2) error(_("Checking sizeof(%s) [%d] is %d %s"), "int16_t", sizeof(int16_t), 2, msg); + if (sizeof(uint16_t) != 2) error(_("Checking sizeof(%s) [%d] is %d %s"), "uint16_t", sizeof(uint16_t), 2 ,msg); SEXP tmp = PROTECT(allocVector(INTSXP,2)); if (LENGTH(tmp)!=2) error(_("Checking LENGTH(allocVector(INTSXP,2)) [%d] is 2 %s"), LENGTH(tmp), msg); diff --git a/src/nafill.c b/src/nafill.c index eb4e5c0e20..ac199051a8 100644 --- a/src/nafill.c +++ b/src/nafill.c @@ -156,7 +156,7 @@ SEXP nafillR(SEXP obj, SEXP type, SEXP fill, SEXP nan_is_na_arg, SEXP inplace, S else if (!strcmp(CHAR(STRING_ELT(type, 0)), "nocb")) itype = 2; else - error(_("Internal error: invalid type argument in nafillR function, should have been caught before. Please report to data.table issue tracker.")); // # nocov + error(_("Internal error: invalid %s argument in %s function should have been caught earlier. Please report to the data.table issue tracker."), "type", "nafillR"); // # nocov if (itype==0 && length(fill)!=1) error(_("fill must be a vector of length 1")); @@ -187,7 +187,8 @@ SEXP nafillR(SEXP obj, SEXP type, SEXP fill, SEXP nan_is_na_arg, SEXP inplace, S case INTSXP : { nafillInteger(ix[i], inx[i], itype, ifill, &vans[i], verbose); } break; - default: error(_("Internal error: invalid type argument in nafillR function, should have been caught before. Please report to data.table issue tracker.")); // # nocov + default: + error(_("Internal error: invalid %s argument in %s function should have been caught earlier. Please report to the data.table issue tracker."), "type", "nafillR"); // # nocov } } if (verbose) From 2497a97b156eeadaf05c68be2af0ee820dfef148 Mon Sep 17 00:00:00 2001 From: Michael Chirico Date: Fri, 13 Mar 2020 11:08:04 +0800 Subject: [PATCH 05/12] centralize !isTRUE(arg) --- inst/po/en@quot/LC_MESSAGES/data.table.mo | Bin 132868 -> 131976 bytes inst/po/zh_CN/LC_MESSAGES/data.table.mo | Bin 131334 -> 130245 bytes po/data.table.pot | 63 ++++--------------- po/zh_CN.po | 73 +++++----------------- src/assign.c | 4 +- src/between.c | 4 +- src/dogroups.c | 2 +- src/forder.c | 4 +- src/fread.c | 2 +- src/frollR.c | 4 +- src/fsort.c | 2 +- src/gsumm.c | 16 ++--- src/nafill.c | 2 +- src/openmp-utils.c | 2 +- src/uniqlist.c | 2 +- src/utils.c | 2 +- 16 files changed, 52 insertions(+), 130 deletions(-) diff --git a/inst/po/en@quot/LC_MESSAGES/data.table.mo b/inst/po/en@quot/LC_MESSAGES/data.table.mo index dbb324892c6cb540f2b621b5147d6e126b87748d..2724a96e8a5b87d9ddc619ace43a3a055f28f7ef 100644 GIT binary patch delta 17908 zcmZwN1$Y(5-pBFX1b3GJB?%TRc=05-yA*eKcQ`=t;=!$y777%%P@uRKDNdmU3KVV8 zLa|bKzrUS1_wsPxeeR#n%coGlU8z^D!2!OF@9yo`2=%eC{{t8s~a}O z1(hA2Gl9el3Ob>WqsQYt48~qn9j6V>zp#wTur(kjNn{568<|CiHj(OrTn3Q}U#Hj!9F z!A@L(jhZ;lY7yga;u|qTO&Yiia3+%P|o2WsTu(>G@$D!nFV<9|&+OMZA z30W|l>pLw;6vnAI7!RQOxHMN+SJXhx?aV+8%18JFGq!S^)|i-oKEa+Cg;OyYPhliJ z!4S;f#`Jkzq}QB*=u^|3Ai)%NUSb-IXlpLqz&anfC+DiQR6EDvf6hXy)1Gc2-yX|j z7c7YDaTDIe+%7HI!QAM+j%K!8?@0R}qC!$8zoyRx48~ZUO^akhHF*;(ieI3b@&Ia9 zyu>V+gGrqUt6?a1MtaYgjQ#O0X2<4T&9obXYRM&CeJmCvPEfE87j!ezqe^!(Pkoq` z@>R$#=O<*!J0*KKPG6jaG@A1cc{rzaPr3z9eYP5l;0ery0eu+pm=_sOj?a1(85T}S?n+O-5S4#{6|iAHbK{F}F8M!k z2KqjyeddrzJ;03WHCUGX1#F1v209Mi<@CfV_%pinWyl~}gM1c7teW^Q)HLffgsFz3 z@N?=_W(sgB=fp6x9+Vqy7PwJJ%le$1Br;RsIu<}pPL^kHy3J!YLWSfe#-UM7v{s8KR`c9;EgXyDd zB&JjFeiA1jKm7}u3wKX8{x*e*^=VV0DNKOOf8qOu;nVi-$ znTmK9)nfgk%~;qSP5alN;4KB34pnEFK{pPy;$6kESYoz$qT#3u9z=CX_BrM)*bH^z z)z;^z^F_=xvtbBUBYy$4!iLN(@`rsk@eoOX5SU zk2$|Kqj?0jApZkudS(2^yww_DL-J=(7YbX>n-2S;>K#N4!hf+mmS15Oq={ID{C#9_ z`<&e0n!av?I&drM2_9h-reA4pqzS5N=VN8uk0UVQDwCgt<;b7I!kBio8THjsgL6Ep z$v0yIyoJ>?|4V#l`g|Pf$>XmvPuK!kJ)K`reO+^{;|#)O)(q>+8b1p|C_joClz$*k z<^(g>)KxXGD1L$Jf&-`I^}^lcZ^oo~ac_$NlXSD{)W%_g(9 zN1{gcSgelkQTwZJHiNT2s%6(>OT34=k;+?W|4JkVkx;>2RD~zl7He-cH?YO}9BWZt zc$-<-#$YJlaV`fzcR9AhCx`79n7qe~W6^-?_)BZV0{6K;3_%5pHl6`OP zyfl^~KM-}JTQCCOVlFJX!_@D9dVpwD(;mPgn0}{e`dX+P7>_#7UTlr=cG3R*Np#s| z-g4JbPf+;>GaDA7p6qATAWF2`@>S1@ReAu+aHoQ;X_n3tG}(3Zg_|cq=u=LN4L(-{<6)@W+^FUougLphf;6YT223}^p z;rdQF5>;>>Uc;LhhYRid#c{qOfAm+rkjZzsV!n2VT;+?G@+GJX9kwRo;BfMFQC&I; zd*gbniXp!-$T?3poKODzb=p6QM2{P+)3_daXlLzBZU#sFZoY_uZkeVmhEbG{!4N!z zb?`2xz~Z+}%T!10?}%e@BI?GH-Z7uy5!Uv1X#WB1m`s7!BzMgqDTgH~?}2K%)fk3% zkwN1myJz;7Kpi&#%i%WEh2LOB%y{2S*S4s2WgbT0AuNco{_vRti~eC&s-dVI2QeqU z#6lSIr}?gLfXes5T(|;r;2Bi?*Qmjn=KSZ=Y<&yKGZy3iE5$1m*)3FPE10+ zDfYlFsN*kVFuJcy{ZLQ(zcL98iXNyYU5jdgBUlKNy*7V{D37|K%BVr+!&LYcX2NZ# zF>oI9;X5pY;cv{+-V3Xc--l6{@E_#*PIVGmK&D`8T!N+1d26090`-LRF%9lPHRVN{ z4`A+QCZ8TvUL1E|d(4Z$?@W13q>-H=s6p8CJr7ZU!~zoZg>wSK@o#HZ$My2{@IK|E zQ5Wduy3To=hmqJl!1bPVE!HCc7!zY;pzD1x)xhNB4`U|0g#GYEpzHIRv}-Ka``Nq< zHE8x=dc1?`I}MPG5Qed^0_w@CqE0*r)m4+Q2<}F;)N|DF30Y2cLxoWL%UB1-;b)Cb zyq1C}JcflaVO-ZqfKjNvu7+8$JAQ&QF&%Ei6nG5vWLL2b{(}RsMLgH*nhU6D_c!VW z(#3bZuj-mU5^9RIm<2-$JkMI0L`N`dB29>;2Jb z5;i6uC$Z}UV=L4RjKUT84R%0ZwIr_hS-c6WQSduPU_RbB8m&F>G;YUxI5C;I(LTvd zOU%IvQ&!(4f1C>ht8O%n5U&*6hKk z*|7rERWYbRcpfvLliIXYMl4UZ66!`KV_MvZs{bRl#lNwz%U?&+xD00>e=bXF`e-_? zr@{u*lebD|nr=0!&yS;;@DEfUCQk2qU(4liGWoBu8|DvkoiA`P24l_)W=vGYc;wfj zX2~}6e*eeGXhv^Q3}Q!D?2hA57krMI6=^e>CXGO?Y@<;1pP)BrKXJW(3{+De#rb#_8{?=frpbRrwMg=;CSMrU*IlgB ztXr@W<(DxvhGa7>RTQ<7)IWXF}#54q9neYuJ?WpMa}nYs6kR2HM$#P z2=+%UICHTcZottPE0^me!tuBiXW?or!rxofg4eMn4$0$sf5iR;)dkh^nj7~GBcTf{ zw*^N~P5i``rwlg>N)gl&yAiejHkQPA`OKIpj~XL=aWJk#4Z6_$uJ@f#5Id0{fNJ{R zkoT9*NnXH=_9O+(iHBijDtw9R+k03J6BjalR|nPP1F;b)O>$~8dM>rOp}g8uN>2> zytJ9$CGi6J&bSUEBh2i0gqo&VBh3xf#6jfyqNe==^bI9ZGRpP-AQ*#v$cL6OOYLk_ zpKn4fp?6SCouaIHf-~mnke|Xj_@*55zd4EO-`-dZgn%whT~x>&cV;A*t~}8eSF@iX})w?)iUeCGSpza zj#)5%ZS$mgQE$7p7=c?*gZLThyP#+t*ZV`oIv)wW-D1@>Z>!X(L6aAIVh7YbzleIG z#`R2JF2Zr-_hE6YT;DY5Xw-+udDJZU3pFScH!wFAh3diqsO$KalTg!MLsblGXzsWv zMv`BETAF{sE|~l?(*?t@DEU*U1to4HbK+vCwZ0?j__>$|f5zk(tFh_YG?+s3e>jN} z?3j*fqT{HyR?;S}_ZzM>YC4WV)jNsnF&EoAD7&BHz2a>6*7#ihQ0P%>Sk&I+M_o9Ky_)u%{W- zxl#H0s86eYSRKE|UKppB>HC4!mDrB*%cz%BL~k>uW?~2Ohfqs$o<3&w4C=%DuS>x; z3e@-U`(EpJOu&8DfqbfqH-# zjKZ6!8_6=%v}_wx*L~q5F@nT-TTpM9X^BOsJH3t?Jn4sNgbxuZ>Ag`?(sH`M(8 z26Y4HF&J}wZf>L+>TNd{)paK@64Q<`UG*7uBR>hlH2+_c(BKOmYesbk)F8W#RB-Z+ zGb>y}REtci%0|Tv_Q7!fuQ()0WW)@Uk#I%T_;0OhJf_RJhgmU?vj}$o> zzqHeAsTs{lzcNqU1obu>i#c(wbsuIR|0ia~xXa8+nFIAsnTLHa$Jeg+r`ZKQ5?V?V zePjB5IBF2CMLoey)cpQrx!K{< zUdc<02WyW(AZgBsoOcAJ&6HmZvjqZX4FHj3g@Lux;GzYaXW!`7zZ7tLj&Oj}tyD&8- z+Hd~s7K-|TQXI2mJyc5$LABsgtcU0JGyhdF#{qM~GMIyWH%y7MP+hSS1Mmpm!ebbU z>kpbW{w!)e`1FvmCsroE5;bO?VlYM>HcN7A)Zkut*k_vj1_f%OY)8zXYmAy6(@;;a z8q?qzR7>4MP0v(EO`q1r*e-(+y=nEMX|V-Zf_leL4;K5Fc}?d^JR`M?Y2JP+}_=70K&X8JwC3RDRH*^JJ9n3()g9E2B9YksXurlnfrF!DZB zlfK1_Sm?4DGqq7&F%Z>tGf?}#$5?m~^J@P8Ny{a;WC+%{vN z(jA{!Nc!F}?|?a|3*AGFg~WHwQdO&Lp>AY2YX36S0lTp+{((#aCo%sNCK3>h1Nb7M ztO03Wj^2;eH{>bywjumm#AfEQ|0tpH=Un!7vwTvpl5{Mazl+6*aU8VN9@vFC+WO#E zCh4put?v8(HvRv~pV}Rx>^Y*y)8o#N0Ipw*!p3C$TXOPgZGJdzCa)IALi8dXO=#;x z)U)X%IFI;_`sFY`QGggtXsd)xiP@yPU=u>)$3DN8^8R#|+g_N(%iF%9Vj-Ij#CpUI z;!E~^$-cbAhnv;|ZCcWo5GCyXZ7Q@|0US>(<2?HB&)#;Ce>Da75#JMA3C5=P|J7_v zdb~Z+Ka^=ZPZXuB8Ij$Vshn}?O!^?Nvh74+)y1z>z}DZM&$p9IYN8=A${tvooqNeg zkx!+xE!VqV3yZcm#P{r*fNAiR3fUHrK1Th1#5U4exDw+`9IFZ+Y_Zk;hpG4lh103z z-@YK7lJfTyG{MY-wpdoB{~_LzXR13#sXq({Xb0PJ@_or?B}$QRO}ruP--1X_rOuQ9 z+P@>2p>}6A%+3yNr>rK&C-_HsUW86ddz|XjAg$H&d))Lv`7wK327E;M75@pPzyBw& z^E&yyDrEbTiWMl^g^5tB+IOgJu|0Wrj73>xVk8k}c6;CX(@4AQe?kNkkI7f1P68s7 z&`UHq;az_Y1+&QfL0q*bNrTU9x*GdWk{(X9CjE|j{%tMkLzHRb%iB3lIt#(d?5woq zbJ#b-rd6-of79mqk5O2UX!OB}Rk7VidDWgr@JZmXggdD@Q4XRx!HVtdvM0`L&99T# zEeWQhd?Uffl=t5b)~f%tEu=6Ii?c)Pcy-iv%HaLGkuv=_)wYxL3Xb6g_n)nmO{J%7 z6>*aNy(pVcdJKk>Z%L#fpAWUIvDbGJn!Ns#h_jpui;xc#?{i$cJ}2D=^%5yXn)i#h z)wCzlpH#jky@+zXm=@qdTSpZ)5if}Sl(olHgtqRpIH*5~Tv&;n=}GJ7(-cBmPs+04 zYGULEC(K7a5&4dI1P2n63B7i;wc>n1*Z|uRO-YZ7zELuzk1tbiOGs%8(mlx~Bb|kG zBGS_dy$U-}rmZ&)Vqa;Dw#WWS`F8{#9?n?e6I-tORcv~TJziz4D4R}X)7N%)3jS58 z-L|o#GtudT1Co+|$NmwN)gihP>xdRa3ZgEdEkE^gVaKudkULBq~v$tp~Bf9{3d& z=VWc73lvQ0n?%aL#U=5R%~bRk;xZyLk&?Rlbk^3Mvy{QV?O9b8{z1At`8!0&2j?Ge z_ZOjj1HtC=e(5Sz>Vt~PKc(^s${v!AV-F0&lH?B)gVq<3RH!X^C$``h`?;Gg%+D9l6z5F72z+Wtz`j2xW!gR;5ghZ9?gI+Pc( z`}8SalCtf@8qTM!7j7UT3H?=7+f4TR8j#3JTxLfY1>QzlTXj_+Hj~bZYq2}VW`7Wd zU^YBw>+6_;3i3xN*QURKb|OF4=2e!^)*r&}4&}YSOzo#adLkD)dtflpko0`ic82(Y z_?=i!)FrgFF?j#3r2gMFpN@1*Vl;7xvJrUD?)$_VSL^;5cEoUzqF5I9+6&q`PH)O* ze^8c!{8HjGe+BC|l<607G%*Ixl7G^{ZhRnFEBjEktvoEb%#I4T&1WQSu!KZM8Y@ z8_K4lwp!K~Sdj7)lwI@o@QGvhwIzSSmQ|t7D$;w<`)XPW1H26HKGHvM&_42)u%bP| zB+3_4b{Z29+V-&TNBqpz`OBJ|vIy$NwfS$z*CK!4=2wySZ?`miO4!^QyJLqnDGuhK zfyxuVkUmQ?gosW4SMp_WB9WJ}CFE~n1}sUuCcO@|CBt|&Jpm7MOe$=gmP90xk4z!_ zmdam~zD1lNzllgf`UmWfpR>Ow=})mEKBi1tjP()e8>BCKqpL49wDl%3dMVZu%Ek~I zhy#>$CdzQcOQJIAUACT|Mbw+ezC6TfA}KqL+nx2Tm;9Bj>#6tL{6B|H$)6PXw5Wk^t$q)5lh&m*MxRywbD_yDNAU}^Z}-_ z+>cx*%9i=zCA~j#Cz!w6^_(%4YIS zuFGmu8>{RJWh@2Byh8tlGre%5YgJ0`tH#?egSW?gOz42+lx4AH`eCE8XOvYZt((eh z^`EO13-HGS+rMuC`#zo}|5Bz8RkrB3<&y`Lc@_PxTu_HGuT0OW+&>0ZQ}*#3*h$&P zbKneRnK(|j=br;v`59*Cz<;Jd`PbeQ=*q5-r@)xk-W1ruu8*gH`{sYAKqbne>=peF zJMoP-1vbC&ra;DjyeUxipZ}c#11VGY=yv^6U^8VOPk~eacvIkCcKI9Mf30e7y(zHy z?f*`J*OYxc1xE5&#e(Kt(LV*MzWd)PFz%f<1%6|fe`p7Dn1(>6_x~N*{<4mg`RntQ3^1FZ({80VgT@cm`w$+&r_=i{x_yes4Q$7ui*>Kq178t`N9>$J7_vTzogEQ`m*fAM?c3*qfI2;(m+1JO4 Vxq8RV6?-lxJ`i*7ftxYt{{XcwOp*Wq delta 18395 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 D29n># diff --git a/inst/po/zh_CN/LC_MESSAGES/data.table.mo b/inst/po/zh_CN/LC_MESSAGES/data.table.mo index c6bd927baaf5404d1484bd77a4086a562a222623..215b155921fd735f445ec23b3a935715f82985e7 100644 GIT binary patch delta 17900 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 diff --git a/po/data.table.pot b/po/data.table.pot index 450472380b..7f630b87b5 100644 --- a/po/data.table.pot +++ b/po/data.table.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: data.table 1.12.9\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-03-13 10:35+0800\n" +"POT-Creation-Date: 2020-03-13 11:05+0800\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -66,7 +66,7 @@ msgid "" "traceback() to data.table issue tracker." msgstr "" -#: assign.c:205 +#: assign.c:205 assign.c:304 #, c-format msgid "Internal error: length of names (%d) is not length of dt (%d)" msgstr "" @@ -123,8 +123,12 @@ msgstr "" msgid "getOption('datatable.alloc')==%d. It must be >=0 and not NA." msgstr "" -#: assign.c:239 fsort.c:109 openmp-utils.c:67 -msgid "verbose must be TRUE or FALSE" +#: assign.c:239 between.c:16 between.c:22 forder.c:467 forder.c:470 frollR.c:50 +#: frollR.c:104 fsort.c:109 gsumm.c:342 gsumm.c:577 gsumm.c:686 gsumm.c:805 +#: gsumm.c:950 gsumm.c:1261 gsumm.c:1402 nafill.c:182 openmp-utils.c:67 +#: uniqlist.c:350 utils.c:101 +#, c-format +msgid "%s must be TRUE or FALSE" msgstr "" #: assign.c:287 @@ -150,11 +154,6 @@ msgstr "" msgid "dt passed to assign has no names" msgstr "" -#: assign.c:304 -#, c-format -msgid "Internal error in assign: length of names (%d) is not length of dt (%d)" -msgstr "" - #: assign.c:306 msgid "" "data.table is NULL; malformed. A null data.table should be an empty list. " @@ -580,18 +579,10 @@ msgid "" "%d. Each should be either length 1 or the length of the longest." msgstr "" -#: between.c:16 -msgid "incbounds must be TRUE or FALSE" -msgstr "" - #: between.c:19 msgid "NAbounds must be TRUE or NA" msgstr "" -#: between.c:22 -msgid "check must be TRUE or FALSE" -msgstr "" - #: between.c:64 #, c-format msgid "Item %d of lower (%d) is greater than item %d of upper (%d)" @@ -878,8 +869,8 @@ msgstr "" msgid "Internal error: xjiscols not NULL but o__ has length" msgstr "" -#: dogroups.c:21 -msgid "'env' should be an environment" +#: dogroups.c:21 gsumm.c:43 +msgid "env is not an environment" msgstr "" #: dogroups.c:40 @@ -1458,14 +1449,6 @@ msgstr "" msgid "Column %d is length %d which differs from length of column 1 (%d)\n" msgstr "" -#: forder.c:467 -msgid "retGrp must be TRUE or FALSE" -msgstr "" - -#: forder.c:470 -msgid "sort must be TRUE or FALSE" -msgstr "" - #: forder.c:473 msgid "At least one of retGrp= or sort= must be TRUE" msgstr "" @@ -1743,9 +1726,9 @@ msgstr "" msgid " Opening file %s\n" msgstr "" -#: fread.c:1212 +#: fread.c:1212 fread.c:1237 #, c-format -msgid "file not found: %s" +msgid "File not found: %s" msgstr "" #: fread.c:1216 @@ -1763,11 +1746,6 @@ msgstr "" msgid " File opened, size = %s.\n" msgstr "" -#: fread.c:1237 -#, c-format -msgid "File not found: %s" -msgstr "" - #: fread.c:1243 #, c-format msgid "Unable to open file after %d attempts (error %d): %s" @@ -2711,10 +2689,6 @@ msgstr "" msgid "n must be non 0 length" msgstr "" -#: frollR.c:50 -msgid "adaptive must be TRUE or FALSE" -msgstr "" - #: frollR.c:58 msgid "n must be integer, list is accepted for adaptive TRUE" msgstr "" @@ -2731,11 +2705,6 @@ msgstr "" msgid "n must be integer vector or list of integer vectors" msgstr "" -#: frollR.c:104 gsumm.c:342 gsumm.c:577 gsumm.c:686 gsumm.c:805 gsumm.c:950 -#: gsumm.c:1261 gsumm.c:1402 uniqlist.c:350 -msgid "na.rm must be TRUE or FALSE" -msgstr "" - #: frollR.c:107 msgid "hasNA must be TRUE, FALSE or NA" msgstr "" @@ -3095,10 +3064,6 @@ msgid "" "list column." msgstr "" -#: gsumm.c:43 -msgid "env is not an environment" -msgstr "" - #: gsumm.c:45 gsumm.c:46 gsumm.c:47 #, c-format msgid "%s is not an integer vector" @@ -4069,10 +4034,6 @@ msgstr "" msgid "'x' argument must be data.table compatible" msgstr "" -#: utils.c:101 -msgid "'check_dups' argument must be TRUE or FALSE" -msgstr "" - #: utils.c:117 msgid "" "argument specifying columns is type 'double' and one or more items in it are " diff --git a/po/zh_CN.po b/po/zh_CN.po index d794a99653..2bf1938acd 100644 --- a/po/zh_CN.po +++ b/po/zh_CN.po @@ -2,7 +2,7 @@ msgid "" msgstr "" "Project-Id-Version: data.table 1.12.5\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-03-13 10:35+0800\n" +"POT-Creation-Date: 2020-03-13 11:05+0800\n" "PO-Revision-Date: 2019-11-18 00:26-04\n" "Last-Translator: Yuhang Chen \n" "Language-Team: Mandarin\n" @@ -65,7 +65,7 @@ msgstr "" "传递给alloccol的dt没有类型属性,请报告traceback()的运行结果给data.table的问题" "跟踪器issue tracker" -#: assign.c:205 +#: assign.c:205 assign.c:304 #, c-format msgid "Internal error: length of names (%d) is not length of dt (%d)" msgstr "内部错误: 列名列表(%d)长度与dt(%d)的长度不等" @@ -131,9 +131,13 @@ msgstr "getOption('datatable.alloc')结果为长度%d的数值向量其长度应 msgid "getOption('datatable.alloc')==%d. It must be >=0 and not NA." msgstr "getOption('datatable.alloc')值为%d, 其必须大于等于零且不能为NA" -#: assign.c:239 fsort.c:109 openmp-utils.c:67 -msgid "verbose must be TRUE or FALSE" -msgstr "verbose参数必须为TRUE或FALSE" +#: assign.c:239 between.c:16 between.c:22 forder.c:467 forder.c:470 frollR.c:50 +#: frollR.c:104 fsort.c:109 gsumm.c:342 gsumm.c:577 gsumm.c:686 gsumm.c:805 +#: gsumm.c:950 gsumm.c:1261 gsumm.c:1402 nafill.c:182 openmp-utils.c:67 +#: uniqlist.c:350 utils.c:101 +#, c-format +msgid "%s must be TRUE or FALSE" +msgstr " %s 参数必须为 TRUE 或 FALSE" #: assign.c:287 msgid "assign has been passed a NULL dt" @@ -160,11 +164,6 @@ msgstr "内部错误: 传递给赋值操作的dt不是data.table或data.frame msgid "dt passed to assign has no names" msgstr "传递给赋值操作的dt没有命名" -#: assign.c:304 -#, c-format -msgid "Internal error in assign: length of names (%d) is not length of dt (%d)" -msgstr "赋值的内部错误: names的长度(%d)与dt的长度(%d)不匹配" - #: assign.c:306 msgid "" "data.table is NULL; malformed. A null data.table should be an empty list. " @@ -648,18 +647,10 @@ msgstr "" "向量长度不一致:length(x)==%d length(lower)==%d length(upper)==%d。每一个向量" "要么是长度为一或者是等于最长向量的长度。" -#: between.c:16 -msgid "incbounds must be TRUE or FALSE" -msgstr "incbounds 必须是 TRUE (真) 或者是 FALSE (假)" - #: between.c:19 msgid "NAbounds must be TRUE or NA" msgstr "NAbounds 必须是 TRUE (真) 或者是 FALSE (假)" -#: between.c:22 -msgid "check must be TRUE or FALSE" -msgstr "check 必须是 TRUE (真) 或者是 FALSE (假)" - #: between.c:64 #, c-format msgid "Item %d of lower (%d) is greater than item %d of upper (%d)" @@ -956,9 +947,9 @@ msgstr "内部错误:jiscols 非 NULL,但 o__ 长度不为0" msgid "Internal error: xjiscols not NULL but o__ has length" msgstr "内部错误:jiscols 非 NULL,但 o__ 长度不为0" -#: dogroups.c:21 -msgid "'env' should be an environment" -msgstr "'env' 应该是一个环境" +#: dogroups.c:21 gsumm.c:43 +msgid "env is not an environment" +msgstr "env不是环境" #: dogroups.c:40 #, c-format @@ -1580,14 +1571,6 @@ msgstr "内部错误:参数 'by' 的值%d超出[1,%d]的范围" msgid "Column %d is length %d which differs from length of column 1 (%d)\n" msgstr "列%d的长度是%d,与第1列的长度(%d)不同\n" -#: forder.c:467 -msgid "retGrp must be TRUE or FALSE" -msgstr "retGrp 的参数是逻辑值,必须是 TRUE 或 FALSE" - -#: forder.c:470 -msgid "sort must be TRUE or FALSE" -msgstr " sort 的参数是逻辑值,必须是 TRUE 或 FALSE" - #: forder.c:473 msgid "At least one of retGrp= or sort= must be TRUE" msgstr "retGrp 和sort 的参数中,至少一个必须是 TRUE" @@ -1873,10 +1856,10 @@ msgstr "内部错误:字符输入的最后一个字节不是 \\0" msgid " Opening file %s\n" msgstr "打开文件 %s\n" -#: fread.c:1212 +#: fread.c:1212 fread.c:1237 #, c-format -msgid "file not found: %s" -msgstr "文件未找到: %s" +msgid "File not found: %s" +msgstr "文件没有找到:%s" #: fread.c:1216 #, c-format @@ -1893,11 +1876,6 @@ msgstr "文件是空的:%s" msgid " File opened, size = %s.\n" msgstr "文件已打开,大小为 %s.\n" -#: fread.c:1237 -#, c-format -msgid "File not found: %s" -msgstr "文件没有找到:%s" - #: fread.c:1243 #, c-format msgid "Unable to open file after %d attempts (error %d): %s" @@ -2915,10 +2893,6 @@ msgstr "" msgid "n must be non 0 length" msgstr "n 必须不是0长度" -#: frollR.c:50 -msgid "adaptive must be TRUE or FALSE" -msgstr "adaptive 必须是 TRUE 或者 FALSE" - #: frollR.c:58 msgid "n must be integer, list is accepted for adaptive TRUE" msgstr "n 必须是整数, 或者当adaptive TRUE时也可以是列表" @@ -2935,11 +2909,6 @@ msgstr "n 必须是正整数 (> 0)" msgid "n must be integer vector or list of integer vectors" msgstr "n 必须是整数向量 或者由整数向量组成的列表" -#: frollR.c:104 gsumm.c:342 gsumm.c:577 gsumm.c:686 gsumm.c:805 gsumm.c:950 -#: gsumm.c:1261 gsumm.c:1402 uniqlist.c:350 -msgid "na.rm must be TRUE or FALSE" -msgstr "na.rm 必须是 TRUE 或者 FALSE" - #: frollR.c:107 msgid "hasNA must be TRUE, FALSE or NA" msgstr "hasNA 必须是 TRUE, FALSE 或者 NA" @@ -2959,8 +2928,8 @@ msgid "" "Internal error: invalid %s argument in %s function should have been caught " "earlier. Please report to the data.table issue tracker." msgstr "" -"内部错误:在 %s 函数内无效的 %s 参数, 该错误理应已被捕获,请向data.table" -"的issue通道报告" +"内部错误:在 %s 函数内无效的 %s 参数, 该错误理应已被捕获,请向data.table的" +"issue通道报告" #: frollR.c:122 msgid "" @@ -3329,10 +3298,6 @@ msgid "" "list column." msgstr "sep ('%c'), sep2 ('%c') 和 dec ('%c') 必须都不相同. 列 %d 是一个空列表" -#: gsumm.c:43 -msgid "env is not an environment" -msgstr "env不是环境" - #: gsumm.c:45 gsumm.c:46 gsumm.c:47 #, c-format msgid "%s is not an integer vector" @@ -4395,10 +4360,6 @@ msgstr "allNA() 不支持'%s'类型" msgid "'x' argument must be data.table compatible" msgstr "'x' 必须为data.table支持的类型" -#: utils.c:101 -msgid "'check_dups' argument must be TRUE or FALSE" -msgstr "参数'check_dups'必须为TRUE或者是FALSE" - #: utils.c:117 msgid "" "argument specifying columns is type 'double' and one or more items in it are " diff --git a/src/assign.c b/src/assign.c index dc63dc4e2e..914f63c52f 100644 --- a/src/assign.c +++ b/src/assign.c @@ -236,7 +236,7 @@ int checkOverAlloc(SEXP x) } SEXP alloccolwrapper(SEXP dt, SEXP overAllocArg, SEXP verbose) { - if (!isLogical(verbose) || length(verbose)!=1) error(_("verbose must be TRUE or FALSE")); + if (!isLogical(verbose) || length(verbose)!=1) error(_("%s must be TRUE or FALSE"), "verbose"); int overAlloc = checkOverAlloc(overAllocArg); SEXP ans = PROTECT(alloccol(dt, length(dt)+overAlloc, LOGICAL(verbose)[0])); @@ -301,7 +301,7 @@ SEXP assign(SEXP dt, SEXP rows, SEXP cols, SEXP newcolnames, SEXP values) SEXP names = PROTECT(getAttrib(dt, R_NamesSymbol)); protecti++; if (isNull(names)) error(_("dt passed to assign has no names")); if (length(names)!=oldncol) - error(_("Internal error in assign: length of names (%d) is not length of dt (%d)"),length(names),oldncol); // # nocov + error(_("Internal error: length of names (%d) is not length of dt (%d)"), length(names), oldncol); // # nocov if (isNull(dt)) { error(_("data.table is NULL; malformed. A null data.table should be an empty list. typeof() should always return 'list' for data.table.")); // # nocov // Not possible to test because R won't permit attributes be attached to NULL (which is good and we like); warning from R 3.4.0+ tested by 944.5 diff --git a/src/between.c b/src/between.c index b4444d968c..0cf71d8726 100644 --- a/src/between.c +++ b/src/between.c @@ -13,13 +13,13 @@ SEXP between(SEXP x, SEXP lower, SEXP upper, SEXP incbounds, SEXP NAboundsArg, S } const int longestBound = MAX(nl, nu); // just for when check=TRUE if (!isLogical(incbounds) || LOGICAL(incbounds)[0]==NA_LOGICAL) - error(_("incbounds must be TRUE or FALSE")); + error(_("%s must be TRUE or FALSE"), "incbounds"); const bool open = !LOGICAL(incbounds)[0]; if (!isLogical(NAboundsArg) || LOGICAL(NAboundsArg)[0]==FALSE) error(_("NAbounds must be TRUE or NA")); const bool NAbounds = LOGICAL(NAboundsArg)[0]==TRUE; if (!isLogical(checkArg) || LOGICAL(checkArg)[0]==NA_LOGICAL) - error(_("check must be TRUE or FALSE")); + error(_("%s must be TRUE or FALSE"), "check"); const bool check = LOGICAL(checkArg)[0]; const bool verbose = GetVerbose(); diff --git a/src/dogroups.c b/src/dogroups.c index e07057b325..0da667ec4a 100644 --- a/src/dogroups.c +++ b/src/dogroups.c @@ -18,7 +18,7 @@ SEXP dogroups(SEXP dt, SEXP dtcols, SEXP groups, SEXP grpcols, SEXP jiscols, SEX // starts can now be NA (<0): if (INTEGER(starts)[0]<0 || INTEGER(lens)[0]<0) error(_("starts[1]<0 or lens[1]<0")); if (!isNull(jiscols) && LENGTH(order) && !LOGICAL(on)[0]) error(_("Internal error: jiscols not NULL but o__ has length")); // # nocov if (!isNull(xjiscols) && LENGTH(order) && !LOGICAL(on)[0]) error(_("Internal error: xjiscols not NULL but o__ has length")); // # nocov - if(!isEnvironment(env)) error(_("'env' should be an environment")); + if(!isEnvironment(env)) error(_("env is not an environment")); ngrp = length(starts); // the number of groups (nrow(groups) will be larger when by) ngrpcols = length(grpcols); nrowgroups = length(VECTOR_ELT(groups,0)); diff --git a/src/forder.c b/src/forder.c index ea0be76d04..ad2e542b74 100644 --- a/src/forder.c +++ b/src/forder.c @@ -464,10 +464,10 @@ SEXP forder(SEXP DT, SEXP by, SEXP retGrpArg, SEXP sortGroupsArg, SEXP ascArg, S if (TYPEOF(VECTOR_ELT(DT, by_i-1)) == CPLXSXP) n_cplx++; } if (!isLogical(retGrpArg) || LENGTH(retGrpArg)!=1 || INTEGER(retGrpArg)[0]==NA_LOGICAL) - STOP(_("retGrp must be TRUE or FALSE")); + STOP(_("%s must be TRUE or FALSE"), "retGrp"); retgrp = LOGICAL(retGrpArg)[0]==TRUE; if (!isLogical(sortGroupsArg) || LENGTH(sortGroupsArg)!=1 || INTEGER(sortGroupsArg)[0]==NA_LOGICAL ) - STOP(_("sort must be TRUE or FALSE")); + STOP(_("%s must be TRUE or FALSE"), "sort"); sortType = LOGICAL(sortGroupsArg)[0]==TRUE; // if sortType is 1, it is later flipped between +1/-1 according to ascArg. Otherwise ascArg is ignored when sortType==0 if (!retgrp && !sortType) STOP(_("At least one of retGrp= or sort= must be TRUE")); diff --git a/src/fread.c b/src/fread.c index c94aeac069..7d462a6e61 100644 --- a/src/fread.c +++ b/src/fread.c @@ -1209,7 +1209,7 @@ int freadMain(freadMainArgs _args) { const char* fnam = args.filename; #ifndef WIN32 int fd = open(fnam, O_RDONLY); - if (fd==-1) STOP(_("file not found: %s"),fnam); + if (fd==-1) STOP(_("File not found: %s"),fnam); struct stat stat_buf; if (fstat(fd, &stat_buf) == -1) { close(fd); // # nocov diff --git a/src/frollR.c b/src/frollR.c index 5212af5dd8..c42d9a3b45 100644 --- a/src/frollR.c +++ b/src/frollR.c @@ -47,7 +47,7 @@ SEXP frollfunR(SEXP fun, SEXP obj, SEXP k, SEXP fill, SEXP algo, SEXP align, SEX error(_("n must be non 0 length")); if (!isLogical(adaptive) || length(adaptive) != 1 || LOGICAL(adaptive)[0] == NA_LOGICAL) - error(_("adaptive must be TRUE or FALSE")); + error(_("%s must be TRUE or FALSE"), "adaptive"); bool badaptive = LOGICAL(adaptive)[0]; R_len_t nk = 0; // number of rolling windows, for adaptive might be atomic to be wrapped into list, 0 for clang -Wall @@ -101,7 +101,7 @@ SEXP frollfunR(SEXP fun, SEXP obj, SEXP k, SEXP fill, SEXP algo, SEXP align, SEX } if (!IS_TRUE_OR_FALSE(narm)) - error(_("na.rm must be TRUE or FALSE")); + error(_("%s must be TRUE or FALSE"), "na.rm"); if (!isLogical(hasna) || length(hasna)!=1) error(_("hasNA must be TRUE, FALSE or NA")); diff --git a/src/fsort.c b/src/fsort.c index 429636ff68..235c92ddec 100644 --- a/src/fsort.c +++ b/src/fsort.c @@ -106,7 +106,7 @@ SEXP fsort(SEXP x, SEXP verboseArg) { double t[10]; t[0] = wallclock(); if (!isLogical(verboseArg) || LENGTH(verboseArg)!=1 || LOGICAL(verboseArg)[0]==NA_LOGICAL) - error(_("verbose must be TRUE or FALSE")); + error(_("%s must be TRUE or FALSE"), "verbose"); Rboolean verbose = LOGICAL(verboseArg)[0]; if (!isNumeric(x)) error(_("x must be a vector of type double currently")); // TODO: not only detect if already sorted, but if it is, just return x to save the duplicate diff --git a/src/gsumm.c b/src/gsumm.c index 0313ed19c3..bbd76fc8aa 100644 --- a/src/gsumm.c +++ b/src/gsumm.c @@ -41,7 +41,7 @@ SEXP gforce(SEXP env, SEXP jsub, SEXP o, SEXP f, SEXP l, SEXP irowsArg) { double started = wallclock(); const bool verbose = GetVerbose(); if (TYPEOF(env) != ENVSXP) error(_("env is not an environment")); - // The type of jsub is pretty flexbile in R, so leave checking to eval() below. + // The type of jsub is pretty flexible in R, so leave checking to eval() below. if (!isInteger(o)) error(_("%s is not an integer vector"), "o"); if (!isInteger(f)) error(_("%s is not an integer vector"), "f"); if (!isInteger(l)) error(_("%s is not an integer vector"), "l"); @@ -339,7 +339,7 @@ void *gather(SEXP x, bool *anyNA) SEXP gsum(SEXP x, SEXP narmArg, SEXP warnOverflowArg) { - if (!isLogical(narmArg) || LENGTH(narmArg)!=1 || LOGICAL(narmArg)[0]==NA_LOGICAL) error(_("na.rm must be TRUE or FALSE")); + if (!isLogical(narmArg) || LENGTH(narmArg)!=1 || LOGICAL(narmArg)[0]==NA_LOGICAL) error(_("%s must be TRUE or FALSE"), "na.rm"); const bool narm = LOGICAL(narmArg)[0]; const bool warnOverflow = LOGICAL(warnOverflowArg)[0]; if (inherits(x, "factor")) error(_("%s is not meaningful for factors."), "sum"); @@ -574,7 +574,7 @@ SEXP gmean(SEXP x, SEXP narm) { SEXP ans=R_NilValue; //clock_t start = clock(); - if (!isLogical(narm) || LENGTH(narm)!=1 || LOGICAL(narm)[0]==NA_LOGICAL) error(_("na.rm must be TRUE or FALSE")); + if (!isLogical(narm) || LENGTH(narm)!=1 || LOGICAL(narm)[0]==NA_LOGICAL) error(_("%s must be TRUE or FALSE"), "na.rm"); if (!isVectorAtomic(x)) error(_("GForce mean can only be applied to columns, not .SD or similar. Likely you're looking for 'DT[,lapply(.SD,mean),by=,.SDcols=]'. See ?data.table.")); if (inherits(x, "factor")) error(_("%s is not meaningful for factors."), "mean"); if (!LOGICAL(narm)[0]) { @@ -683,7 +683,7 @@ SEXP gmean(SEXP x, SEXP narm) // gmin SEXP gmin(SEXP x, SEXP narm) { - if (!isLogical(narm) || LENGTH(narm)!=1 || LOGICAL(narm)[0]==NA_LOGICAL) error(_("na.rm must be TRUE or FALSE")); + if (!isLogical(narm) || LENGTH(narm)!=1 || LOGICAL(narm)[0]==NA_LOGICAL) error(_("%s must be TRUE or FALSE"), "na.rm"); if (!isVectorAtomic(x)) error(_("GForce min can only be applied to columns, not .SD or similar. To find min of all items in a list such as .SD, either add the prefix base::min(.SD) or turn off GForce optimization using options(datatable.optimize=1). More likely, you may be looking for 'DT[,lapply(.SD,min),by=,.SDcols=]'")); if (inherits(x, "factor") && !inherits(x, "ordered")) error(_("%s is not meaningful for factors."), "min"); R_len_t i, ix, thisgrp=0; @@ -802,7 +802,7 @@ SEXP gmin(SEXP x, SEXP narm) // gmax SEXP gmax(SEXP x, SEXP narm) { - if (!isLogical(narm) || LENGTH(narm)!=1 || LOGICAL(narm)[0]==NA_LOGICAL) error(_("na.rm must be TRUE or FALSE")); + if (!isLogical(narm) || LENGTH(narm)!=1 || LOGICAL(narm)[0]==NA_LOGICAL) error(_("%s must be TRUE or FALSE"), "na.rm"); if (!isVectorAtomic(x)) error(_("GForce max can only be applied to columns, not .SD or similar. To find max of all items in a list such as .SD, either add the prefix base::max(.SD) or turn off GForce optimization using options(datatable.optimize=1). More likely, you may be looking for 'DT[,lapply(.SD,max),by=,.SDcols=]'")); if (inherits(x, "factor") && !inherits(x, "ordered")) error(_("%s is not meaningful for factors."), "max"); R_len_t i, ix, thisgrp=0; @@ -947,7 +947,7 @@ SEXP gmax(SEXP x, SEXP narm) // gmedian, always returns numeric type (to avoid as.numeric() wrap..) SEXP gmedian(SEXP x, SEXP narmArg) { - if (!isLogical(narmArg) || LENGTH(narmArg)!=1 || LOGICAL(narmArg)[0]==NA_LOGICAL) error(_("na.rm must be TRUE or FALSE")); + if (!isLogical(narmArg) || LENGTH(narmArg)!=1 || LOGICAL(narmArg)[0]==NA_LOGICAL) error(_("%s must be TRUE or FALSE"), "na.rm"); if (!isVectorAtomic(x)) error(_("GForce median can only be applied to columns, not .SD or similar. To find median of all items in a list such as .SD, either add the prefix stats::median(.SD) or turn off GForce optimization using options(datatable.optimize=1). More likely, you may be looking for 'DT[,lapply(.SD,median),by=,.SDcols=]'")); if (inherits(x, "factor")) error(_("%s is not meaningful for factors."), "median"); const bool isInt64 = INHERITS(x, char_integer64), narm = LOGICAL(narmArg)[0]; @@ -1258,7 +1258,7 @@ SEXP gnthvalue(SEXP x, SEXP valArg) { // implemented this similar to gmedian to balance well between speed and memory usage. There's one extra allocation on maximum groups and that's it.. and that helps speed things up extremely since we don't have to collect x's values for each group for each step (mean, residuals, mean again and then variance). SEXP gvarsd1(SEXP x, SEXP narm, Rboolean isSD) { - if (!isLogical(narm) || LENGTH(narm)!=1 || LOGICAL(narm)[0]==NA_LOGICAL) error(_("na.rm must be TRUE or FALSE")); + if (!isLogical(narm) || LENGTH(narm)!=1 || LOGICAL(narm)[0]==NA_LOGICAL) error(_("%s must be TRUE or FALSE"), "na.rm"); if (!isVectorAtomic(x)) error(_("GForce var/sd can only be applied to columns, not .SD or similar. For the full covariance matrix of all items in a list such as .SD, either add the prefix stats::var(.SD) (or stats::sd(.SD)) or turn off GForce optimization using options(datatable.optimize=1). Alternatively, if you only need the diagonal elements, 'DT[,lapply(.SD,var),by=,.SDcols=]' is the optimized way to do this.")); if (inherits(x, "factor")) error(_("%s is not meaningful for factors."), isSD ? "sd" : "var"); long double m, s, v; @@ -1399,7 +1399,7 @@ SEXP gsd(SEXP x, SEXP narm) { SEXP gprod(SEXP x, SEXP narm) { - if (!isLogical(narm) || LENGTH(narm)!=1 || LOGICAL(narm)[0]==NA_LOGICAL) error(_("na.rm must be TRUE or FALSE")); + if (!isLogical(narm) || LENGTH(narm)!=1 || LOGICAL(narm)[0]==NA_LOGICAL) error(_("%s must be TRUE or FALSE"), "na.rm"); if (!isVectorAtomic(x)) error(_("GForce prod can only be applied to columns, not .SD or similar. To multiply all items in a list such as .SD, either add the prefix base::prod(.SD) or turn off GForce optimization using options(datatable.optimize=1). More likely, you may be looking for 'DT[,lapply(.SD,prod),by=,.SDcols=]'")); if (inherits(x, "factor")) error(_("%s is not meaningful for factors."), "prod"); int i, ix, thisgrp; diff --git a/src/nafill.c b/src/nafill.c index ac199051a8..25c5cee451 100644 --- a/src/nafill.c +++ b/src/nafill.c @@ -179,7 +179,7 @@ SEXP nafillR(SEXP obj, SEXP type, SEXP fill, SEXP nan_is_na_arg, SEXP inplace, S nafillInteger64(i64x[i], inx[i], itype, i64fill, &vans[i], verbose); } else { if (!IS_TRUE_OR_FALSE(nan_is_na_arg)) - error("nan_is_na must be TRUE or FALSE"); // # nocov + error(_("%s must be TRUE or FALSE"), "nan_is_na"); // # nocov bool nan_is_na = LOGICAL(nan_is_na_arg)[0]; nafillDouble(dx[i], inx[i], itype, dfill, nan_is_na, &vans[i], verbose); } diff --git a/src/openmp-utils.c b/src/openmp-utils.c index 3c019cb0e6..12f1e26d91 100644 --- a/src/openmp-utils.c +++ b/src/openmp-utils.c @@ -64,7 +64,7 @@ static const char *mygetenv(const char *name, const char *unset) { } SEXP getDTthreads_R(SEXP verbose) { - if (!isLogical(verbose) || LENGTH(verbose)!=1 || INTEGER(verbose)[0]==NA_LOGICAL) error(_("verbose must be TRUE or FALSE")); + if (!isLogical(verbose) || LENGTH(verbose)!=1 || INTEGER(verbose)[0]==NA_LOGICAL) error(_("%s must be TRUE or FALSE"), "verbose"); if (LOGICAL(verbose)[0]) { #ifndef _OPENMP Rprintf(_("This installation of data.table has not been compiled with OpenMP support.\n")); diff --git a/src/uniqlist.c b/src/uniqlist.c index 50258111dd..a8a79b9541 100644 --- a/src/uniqlist.c +++ b/src/uniqlist.c @@ -347,7 +347,7 @@ SEXP nestedid(SEXP l, SEXP cols, SEXP order, SEXP grps, SEXP resetvals, SEXP mul SEXP uniqueNlogical(SEXP x, SEXP narmArg) { // single pass; short-circuit and return as soon as all 3 values are found if (!isLogical(x)) error(_("x is not a logical vector")); - if (!isLogical(narmArg) || length(narmArg)!=1 || INTEGER(narmArg)[0]==NA_INTEGER) error(_("na.rm must be TRUE or FALSE")); + if (!isLogical(narmArg) || length(narmArg)!=1 || INTEGER(narmArg)[0]==NA_INTEGER) error(_("%s must be TRUE or FALSE"), "na.rm"); bool narm = LOGICAL(narmArg)[0]==1; const R_xlen_t n = xlength(x); if (n==0) diff --git a/src/utils.c b/src/utils.c index 5177c76574..7592ce2aa5 100644 --- a/src/utils.c +++ b/src/utils.c @@ -98,7 +98,7 @@ SEXP colnamesInt(SEXP x, SEXP cols, SEXP check_dups) { if (!isNewList(x)) error(_("'x' argument must be data.table compatible")); if (!IS_TRUE_OR_FALSE(check_dups)) - error(_("'check_dups' argument must be TRUE or FALSE")); + error(_("%s must be TRUE or FALSE"), "check_dups"); int protecti = 0; R_len_t nx = length(x); R_len_t nc = length(cols); From 1a36935dccfc448f44af9f12c044c174680b93a0 Mon Sep 17 00:00:00 2001 From: Michael Chirico Date: Fri, 13 Mar 2020 11:08:32 +0800 Subject: [PATCH 06/12] run update again --- inst/po/zh_CN/LC_MESSAGES/data.table.mo | Bin 130245 -> 130329 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/inst/po/zh_CN/LC_MESSAGES/data.table.mo b/inst/po/zh_CN/LC_MESSAGES/data.table.mo index 215b155921fd735f445ec23b3a935715f82985e7..2b07213e339ec798f75218f5af8101a2b1545275 100644 GIT binary patch delta 17591 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�d1-^;d3*4qs-)RS){>UnS) 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 fZ)2;1yGFMK%MX; zM&f;}iNQ&Z(-)Ib?LSZQI8H?pmnkTV*%~=c5XPdev;}6vahM0^U@C6F#yEnHl6V}; z;6p5o1-VLD7j^u87>FyeIPO3l@0y2%8a}m#HFcb5^6{whQCJpNVmUmA*)X7)<8Td5 zAXdiCs5@GSi*Xya#iZtrQwi6gdgO}D|BE`lr&0@(XlM0c0u`$;7;mEv{1S^`o@B=< zkFj_h2cgC|x~1bVZJajv8NPvqzk}6KW4i-21V@l#IInRvrLhP8fnMx_DV+iCh%yM4dR*n!TGDnq=#C>`r|kA96S!Y4Hk1;Z59zIeV}w zTzUZWlYiLL+;Lzp$2m$q4%Gu0dei?ABr5kd%cM1`tEXcX{0!BFk5Q|jcpt|pgl#bl zM`J-;f{dDT0N=(uEOM>;S(pcRp?dHvp2C;78B^c%nC0Ow=_GS7pCScd#?)Qzk`jr}#$>dDK*s*6b;o0x|M zD7b=^@FkYOih~@d8FoVEi}Q&!+h8+E`=jpsl+738Dig_1#>RLW7h>2@9$vT;7hqkw zsTg{$k%%XeVHisU8z95uti<}5aX8O<#Ego7*xcmb$78r1C(v%>NLCQ} zmn?x8e0!96plwI>>^%&}z|p>*@HkNIs%N9enI3%$!?gYnk;qHMb&SI2sD`CEn#Qmj>O^x< zJ#rG&E_i}@sno+*@{_PK9!KVv^Aek5pA<6(_G3Bnk5I=g@*b0#^E=5Tbbu5rg-0+4 z{)w7oX(pPNM_*JAjm8ArjhfXjunv}(jM$(NtX z_?M>OFbP%sG0m7`1{LI^W||Xhn`OrO26kb`XQ;PcdyYb9IFpcLJDHeaT(jfF>6mA( z>9I8!L;eqJgk`*DHH`Ao|E(z4O~D(OZJrsseyBUzf;!<7)R459Zw@dMH56B@kqgWL z2Vy(QH=^Dp8JPOaOQ!{@XHH=a%(aN6tnx+lzwRLWVxt%73@6w7_O*)|vvb%21D2TC z+zP|V&&Fc7)#fi@ZSv1hle*?o^BkFmI?hvT@nz--+Rj6w2^F7X6lVLtjCnlj4n9V8 z-D7Ny6_%U1G7&qIKZYf+=nCJLC8s%ZZf6;m#pspBKB(g_Mja;=tD`6UL-SH-k2NXS ziXHKH)U0p(k$Ia49O`iTpl{!_YNma(BQt$WKM~ z^Ekhd&>cjqHE*$os0*2n>e`d2v3rDLFlL>}??0=&)5=k ztv5Z|566?=jmcX7)i;3YtKL(@8uSE^XP1F$N-EJ;qB-SOr-sT^mM-2+@;3Mz6%TD zJ*W1>{rvFQkh~I6l{4LahK1N;X zE!12nv&YPl{;2kguq+&IbL@_SInd4OH8+CKC0T8h2M2kvM5o0Ay1 z-zhPy z7i@}2o?&D#&VeB ztQqTg)N&e$niI#cGCsj}So)m3a10@T4|`y`uek`V|2IiYq2OEWgk8=%&RFj35auNx z{|!Gnumfht2bhRyE}A>3kD9bSP?PmTR1e<7WGwKl8KPl$jr>7O&+(Uk$G0rb@2t7R zbDx5Gm(91^HsA9+r+gIZM60ZKu?+cgSIii8!a?L`U<3RYdvTlwSM6^=&Q^=^r0aZZ zQaj|HoM|^$LD=ag{U1i+DG7C9t{=<}U9kZ9kFXgYMa_kfA5D*xK-DMWd)NzgVfQc+ z^ZjH@z+vS3qOV6#bECk|X3i!3O#j!QU@`^8@F?m5ao;w`eaq~aj0u#_L!J0Ltb@-{ z%QNm5^IRB)8iJ273V%TD7kt}1nA)PsKSZ79o7?n%1rq;KkPj=cMwD-gy3!OZid(Qa zev6uv?p@{xzJ;1}e_$L&{A%{=iaPNO490Vq3xB~p_!1*Ax92zWvpN=aWj(M3E_x5rht^WRo1W-_4Jh|)CJ{m68AfB? zKg^^{M%}^ts2;h7l`!y6GY9IS?w}j$&Zc5XT!~fi6c)pD4+xj}fm%%!ADSL(f|a%Y zJtWk{yKoF%L+#k%ky*bJu?YE_SROMx=DR;e;{dFO+W%9G!0V{?&J$xKYEC4fdUP7r z!_`

;FE9G!zv4%RD$Du>koFm=isyRWc7X2ex5Zyn=C<`Kfu9H^%zpmt!rwV=eK_ zJU8CNE|ibL7`%q`5PEc{x4e|@;Be@$tPfGe2Hpb>IIK& zY=fFJjac;Ru@R^qU5{n(yfxq@H>ZN~B$(JvXVifj{L8l<9EP#j&~bftIt`nUKZRK^ z%yoU=kV;|>@~bcmci~XHfR(X+fa_abV^MQv8Ro$w0j|e4cGql!^l4n*9~26q?yMN< zz^$+X_Qp!M6xCB-qsIOY>Vk5lHTB`vmZ)Vt4Qt^#tcZ6o6Xs9H&m4_)ai(ZtY>4@B zAm+wd7>MgoceW3^;w2o0HF%I~Xttx4-FegnKEaMyDud~XX;_H7^P1~>+ZIL*QD+Yc zop>5*a%@H2Nnl3T>5LIL2ghMD24!-6e_ZN~ZOQ+H5m@tea{--j4f*ld6N_hdeQ(Rz z*pU1otch8&xW38iNg{EUf(3XRdu26O+LSkvdSWOxLNDqcosIr zV>l5*a+sd|05!)BqQ?Ap)bTO~y80^TaaxnePC*K4tmdO8;WiA#YpAYzjQWty@Yf=v&#!wux$#b#JEmxk2CS7{O&n}ryG`%rgu1=VFi zA!gQhLOnRPpoZir>W-%7cAbs53Nv7{Jmv&#u{`+=s7L!%EP&bby1rjPQ5eqoomnKb zKDVH{<~y8^k)h^-_M>L)RqTL)`CQ*iWgzOpCt@~SZ_D@MQSxU|J+dIo^yG7EuKcD4 zqtK%yT(sz$}aRQIqZ>>Vh7lP7qem7;o)`dN55#ohTLa;x$xHK0`gC3l?&n zudq34sKN@HIZ*{u$wwFVxV~p``Xa9Huhg|s2W*JJ*a4ZP&JgU4D=+~wMwNpXD@Gu78MbwR4!mRibb7B@xQ8VicViE2htf-Pd>2uyd}+r#GvM$rz;7))qX(TLFQ7f@BLj8 z^~mjpTJH;S5?)1Jc@O?@q&ppn$+!#k+I_u@>->u4u`Py`H9a*Pb%Qfd7kC+?wf$< z7j@hj7>*lJPsmgpieXhbALn=GlF%|chC1POJc7BSU1v33#VR3^h0SZZPHQ}a8q%V1rrk)?vOgV1|Eo)a`N685QW9w5t5ljv(~jNyr{?=PDJFwA9n;aST6s^dBn@XNYpvL)4XeSZ}jfV>u* zO!ZygcgOGs9&?8?8<;yej~cVI4NaF7!qVhpQ77(?rEo9mJ^u@K#jqqZ3CCh~^2boC z>D>W513w9p8Q#ChXGB@g>*o*dk1yExu~H!fqFXz zG&Pn+U054b{Y=#AIF9P_EX~XfC8OqwXFQ1pB<`ZdvQl$1dwZhh#uU^YA3#0%enmYm z%C<0f*cLUm15mHyLl}#fumtU&2()~tWSO(YI0w* z`Lf+jkGz9=&F{kITK{Q#m}h!x)RXQus_V-4G+!(R;283uy^QapdL~bA({2m;CK>8= zTd0qD9t=SZ)#s>HbjRky`kMXfqNgSmDJ0&)FHkRw3U3VO+iclIOd`H*Fp>-*DeJ5>Gx#$kcs=84)3H7Dkx zR@ILl66*5oBTSc6MRna)9ELAYI}CZp_5GjCBRGP5wUK7EY)7r*Z0{O}qb}?^MqtP& z(?eBJLo^t5Lu*mX)N_l3t~7GA8Pg#cLH<1IK#x#6mKx*w{*>AUHAz24O{xdj7bEFO z-O(JZiw97T;Phk7WSfe*(c`Eg{T+Slzr;9mN8M0ec?I>-Nk86nSwqxVk3>zC6YK)&&a+N3Jr|FhlvHIMdp zF`j&!*E|_hP?Pqwm-RoCMCEyQIpJ62e?)cV=K1EO^8@O@kqeBStcx%w<>ydy;uh+G zRd}K6T;bg?6|ZBj#b#C2U1H{v7d52!moQ6%N#tE>CSN&gJJbcFU^wo^KKLC@!}w*U zCr)F3^3fldu3d|o3ptmYp{ap-V)j7|;XKq2lRK!P%HvsKzQ4CbO}=fI19Pl2Un~k? z3-S|jFoG6+0jtdKgejPve3jK^|9Y64{07vjI)b{fjBCtX^2CtP zcedf!60cx74ji@Ce2=fX&UHSfyzs}a^8!z!mg&j$#>c3!4c}nwisi_!#xT5yo$wL1 z#pI3r6yx}takbw6Uv4s8Hej>sT&BSSJcom}xXw&W*lNB3eT|v}_fdCJ^b_;G?}u7e z(@=Bag7psS&R^mv4B2MB3(i9=%UwQMe?O5JPeI^zGfC!SLGm|IlPc{FbAou(>X?Rw zaSLksT|ix!yVE>?s-aFi2(>DvVk{m-b$z;B<_4lMit{^TNW|eM*a{z_W@m#>%@2)X zs1qzjjrBLE_5O#gFSgtCP-84Wd0!lj)2*5IxK0H5$*7+D7&S@nqesvFTzkz=t8N%X zei&*Dr=rGiAL@=Tq3+-%>W-rJnf(T%>fgg~TyM+2!hGbfVgNqJRQv~ZgJ11u{cBk~ z*>6tR@H2B|qfmFa3iZUhg6isA2h0zT1guMb80vk0z?NtH-0W8aLn$AMdX&#b&5gsT z<9v%+MQIOu%#~C-=sG`9&=d1u!$YP)57dP$LCyN}I1B$l-NB5*=4<;NEJD5@Yf>ky zhnaCCj>Jh=3NuET728=K-&)R@&jYW~nL6Ezp+qQ?3phTuKS zkLixNzOgQhntX|hf)< zb$SNjEX*~jWsaK*XAo$1Jt`^3ToLd$FjH= zb%S@&xBd&BH_NOgstbo;MO=)T@HA?UTtZz)zy)Io)Pb9${xZ@Z)e~cJD6T?1*z$a1 zR>M-%a^8))fQ#tqMiZ`S#D*ob`K6*Fr)qt^EacnI&{6Wnms z4AFIOx`J|S$`30VxAkOz76W#^3e^}zs5M~rukBsgvu{Lt=pZb zCtkT9%#*P@stZS;9v}-)J(G$Ncn9?rF4K>uCkLU1Xg=z~wqkGm8(AFu`(HkHkch`oL9;Cni;pD0H;_%=f{gF9rjYD38*cS^8Dm`5utV; zQ)51tP?nV#L{^XJL8N=ycJGsKO!{s7l{iUg^LY8VOPnBP(%>}?zMOO^(rHP*y2ViD zCHC0zFzXT;HKqJJ+xQz?NM73j+Gr(d`dr0iC#~N)tL)ju*Kb^8{{`p@vB8Ho+@85&WA?@kI2d`w` z0h?owU=@8cG%PQ;U*fbH=yv75BEy~IM|V=k~OEookl5R)nn})Wjl;y<| z)Q`eD5c=bFJt#ju;sJJ?^oKtnnP`cj?snKOM`88r-Rh}LgZ2)|u$u@kBr>WESmMtrQ!zo)v*#zuLbfBy-@gZd+@H{bv7)k7>tOViT-n5C$dYfxY zrO^RgfxU?Vq)&3t1VURH%Btct^7DKp=A#_>_o+*=?fg~CY+i@2`#*K7Xs@j@u~u($ zZ7qn&q`$QJisWnBhN{;#hPstlmGa*Bw+h)JDF1=7bXe$>ecrI?9{30CV(=86)lO{L zXzw{fVl0W=R2C#1ts1+v!fw?0x16Li+5BUFp>-gB#4-B6QvN3SJmgOk*@=$irxDsF z89dIfwxAdXu1xw46^F2*Jy9Fe(Dzw^^5&#MiG4&q^8XP2tuN`rcE3mp`PJdun(!G* zEPbVIee$jKYMxBt=fpZ+Q`S9pvT1S4rcc_PN89{ZbSc}!317zmTd(RIl=b($M&72h zEG1_#t-Un0c$0KS%BJFHcF!WD|0cZ~=i!GcCoW31rWj7tpQ4B2VEcA_K9K zx)595i2cWt_nhV<$QG8zzErFxauS_vIZ3BB?P_B?%7RtER+O?WhPbmD$Hclab zjJQC)2of#?L#1#5>1+jxTOZ-OYIhKxohz( zCF&7x5Ce(n#0p|RahCXrcuHiBqAAgx7(vV<))D)Ov&2utQzCOb^Ma^BG$pzd zV~M52Rw6atL-&w)L1a&0786y8B%(JlidaGHAigB75KoDmEQNAJZK4g)kC;p>C3X|3 z#0}yR@meCsC8`ohL}y|sF`HObjE~(!Dsh8&M7&mqryfz2NFq8DgT2dYh6Zn>)3q>N zLhp=!*|K?0)eKG7@Mr#<<2_e1q{l?1sMD5>P@8p>DXskiY}p>lbS!QDvNM$Fg{XFw z3GJKzmN}lvve>ek-afIR!9A!^iE8vxQtL6^#j%BAc2E;zYqT6x^EYMsR;Sk0ZCTte zu2ajF`LAJu_gQRc*d}Up7i#^QRZj^WDVMi=t%pj?}%QHeHx z51hE|omwkz@LyChB)-G?PZ;CfQ!6xP^&Ru?<#fVYgiiD;WqM4gOy3_=Hu$djXD2F4 zv1K*9IpTsmBlxBeL5XS#S#zQGI!9f8TNYuPg(6d{grn9vXhim zu>0mPdY30=3=X_!{t8FYe}fwAJroxd(}x-jlCCb0(2*xmrk^9)_^#_KyGdC(Uy1qY zt#<3YIpTwYAKW*8&{w6u?<#ns<3o#g`Q7}{QZ+1V-*NU)re4sdN4JiX(K|Xm)E(ws z93L9IiJvAKP+gDuSoMM46Y-(xTJy}y>OB=7;x6&J2|+Q($p7!;{gyJ_w>JN^+@(yD zO-E!E`HmRvZI%!emi*xV$5!{Q7MfH#=TPssgdlgmcYZ>l;%8`A)z;)F=gT2^0hRe8w! z%e=PiJY`yz+IO`r+s=zX_pCDiLb^+tzYoipx=g+=&pL25Z?nW8cac7eKjAx1gx%Rc zZA-U4-k(ygPWs5d4)r1*JKnt Date: Fri, 13 Mar 2020 11:20:32 +0800 Subject: [PATCH 07/12] broaden use of IS_TRUE_OR_FALSE and add some newlines for codecov --- src/assign.c | 3 ++- src/between.c | 4 ++-- src/forder.c | 4 ++-- src/frollR.c | 2 +- src/fsort.c | 2 +- src/gsumm.c | 60 ++++++++++++++++++++++++++++++---------------- src/openmp-utils.c | 3 ++- src/uniqlist.c | 3 ++- 8 files changed, 52 insertions(+), 29 deletions(-) diff --git a/src/assign.c b/src/assign.c index 914f63c52f..0dcf10dacf 100644 --- a/src/assign.c +++ b/src/assign.c @@ -236,7 +236,8 @@ int checkOverAlloc(SEXP x) } SEXP alloccolwrapper(SEXP dt, SEXP overAllocArg, SEXP verbose) { - if (!isLogical(verbose) || length(verbose)!=1) error(_("%s must be TRUE or FALSE"), "verbose"); + if (!IS_TRUE_OR_FALSE(verbose)) + error(_("%s must be TRUE or FALSE"), "verbose"); int overAlloc = checkOverAlloc(overAllocArg); SEXP ans = PROTECT(alloccol(dt, length(dt)+overAlloc, LOGICAL(verbose)[0])); diff --git a/src/between.c b/src/between.c index 0cf71d8726..9db4847872 100644 --- a/src/between.c +++ b/src/between.c @@ -12,13 +12,13 @@ SEXP between(SEXP x, SEXP lower, SEXP upper, SEXP incbounds, SEXP NAboundsArg, S error(_("Incompatible vector lengths: length(x)==%d length(lower)==%d length(upper)==%d. Each should be either length 1 or the length of the longest."), nx, nl, nu); } const int longestBound = MAX(nl, nu); // just for when check=TRUE - if (!isLogical(incbounds) || LOGICAL(incbounds)[0]==NA_LOGICAL) + if (!IS_TRUE_OR_FALSE(incbounds)) error(_("%s must be TRUE or FALSE"), "incbounds"); const bool open = !LOGICAL(incbounds)[0]; if (!isLogical(NAboundsArg) || LOGICAL(NAboundsArg)[0]==FALSE) error(_("NAbounds must be TRUE or NA")); const bool NAbounds = LOGICAL(NAboundsArg)[0]==TRUE; - if (!isLogical(checkArg) || LOGICAL(checkArg)[0]==NA_LOGICAL) + if (!IS_TRUE_OR_FALSE(checkArg)) error(_("%s must be TRUE or FALSE"), "check"); const bool check = LOGICAL(checkArg)[0]; const bool verbose = GetVerbose(); diff --git a/src/forder.c b/src/forder.c index ad2e542b74..98b50b255b 100644 --- a/src/forder.c +++ b/src/forder.c @@ -463,10 +463,10 @@ SEXP forder(SEXP DT, SEXP by, SEXP retGrpArg, SEXP sortGroupsArg, SEXP ascArg, S STOP(_("Column %d is length %d which differs from length of column 1 (%d)\n"), INTEGER(by)[i], length(VECTOR_ELT(DT, INTEGER(by)[i]-1)), nrow); if (TYPEOF(VECTOR_ELT(DT, by_i-1)) == CPLXSXP) n_cplx++; } - if (!isLogical(retGrpArg) || LENGTH(retGrpArg)!=1 || INTEGER(retGrpArg)[0]==NA_LOGICAL) + if (!IS_TRUE_OR_FALSE(retGrpArg)) STOP(_("%s must be TRUE or FALSE"), "retGrp"); retgrp = LOGICAL(retGrpArg)[0]==TRUE; - if (!isLogical(sortGroupsArg) || LENGTH(sortGroupsArg)!=1 || INTEGER(sortGroupsArg)[0]==NA_LOGICAL ) + if (!IS_TRUE_OR_FALSE(sortGroupsArg)) STOP(_("%s must be TRUE or FALSE"), "sort"); sortType = LOGICAL(sortGroupsArg)[0]==TRUE; // if sortType is 1, it is later flipped between +1/-1 according to ascArg. Otherwise ascArg is ignored when sortType==0 if (!retgrp && !sortType) diff --git a/src/frollR.c b/src/frollR.c index c42d9a3b45..4c87ab02c9 100644 --- a/src/frollR.c +++ b/src/frollR.c @@ -46,7 +46,7 @@ SEXP frollfunR(SEXP fun, SEXP obj, SEXP k, SEXP fill, SEXP algo, SEXP align, SEX if (xlength(k) == 0) // check that window is non zero length error(_("n must be non 0 length")); - if (!isLogical(adaptive) || length(adaptive) != 1 || LOGICAL(adaptive)[0] == NA_LOGICAL) + if (!IS_TRUE_OR_FALSE(adaptive)) error(_("%s must be TRUE or FALSE"), "adaptive"); bool badaptive = LOGICAL(adaptive)[0]; diff --git a/src/fsort.c b/src/fsort.c index 235c92ddec..5e3e5b6004 100644 --- a/src/fsort.c +++ b/src/fsort.c @@ -105,7 +105,7 @@ int qsort_cmp(const void *a, const void *b) { SEXP fsort(SEXP x, SEXP verboseArg) { double t[10]; t[0] = wallclock(); - if (!isLogical(verboseArg) || LENGTH(verboseArg)!=1 || LOGICAL(verboseArg)[0]==NA_LOGICAL) + if (!IS_TRUE_OR_FALSE(verboseArg)) error(_("%s must be TRUE or FALSE"), "verbose"); Rboolean verbose = LOGICAL(verboseArg)[0]; if (!isNumeric(x)) error(_("x must be a vector of type double currently")); diff --git a/src/gsumm.c b/src/gsumm.c index bbd76fc8aa..7034938b4c 100644 --- a/src/gsumm.c +++ b/src/gsumm.c @@ -339,15 +339,18 @@ void *gather(SEXP x, bool *anyNA) SEXP gsum(SEXP x, SEXP narmArg, SEXP warnOverflowArg) { - if (!isLogical(narmArg) || LENGTH(narmArg)!=1 || LOGICAL(narmArg)[0]==NA_LOGICAL) error(_("%s must be TRUE or FALSE"), "na.rm"); + if (!IS_TRUE_OR_FALSE(narmArg)) + error(_("%s must be TRUE or FALSE"), "na.rm"); const bool narm = LOGICAL(narmArg)[0]; const bool warnOverflow = LOGICAL(warnOverflowArg)[0]; - if (inherits(x, "factor")) error(_("%s is not meaningful for factors."), "sum"); + if (inherits(x, "factor")) + error(_("%s is not meaningful for factors."), "sum"); const int n = (irowslen == -1) ? length(x) : irowslen; double started = wallclock(); const bool verbose=GetVerbose(); if (verbose) Rprintf(_("This gsum (narm=%s) took ... "), narm?"TRUE":"FALSE"); - if (nrow != n) error(_("nrow [%d] != length(x) [%d] in %s"), nrow, n, "gsum"); + if (nrow != n) + error(_("nrow [%d] != length(x) [%d] in %s"), nrow, n, "gsum"); bool anyNA=false; SEXP ans; switch(TYPEOF(x)) { @@ -574,9 +577,11 @@ SEXP gmean(SEXP x, SEXP narm) { SEXP ans=R_NilValue; //clock_t start = clock(); - if (!isLogical(narm) || LENGTH(narm)!=1 || LOGICAL(narm)[0]==NA_LOGICAL) error(_("%s must be TRUE or FALSE"), "na.rm"); + if (!IS_TRUE_OR_FALSE(narm)) + error(_("%s must be TRUE or FALSE"), "na.rm"); if (!isVectorAtomic(x)) error(_("GForce mean can only be applied to columns, not .SD or similar. Likely you're looking for 'DT[,lapply(.SD,mean),by=,.SDcols=]'. See ?data.table.")); - if (inherits(x, "factor")) error(_("%s is not meaningful for factors."), "mean"); + if (inherits(x, "factor")) + error(_("%s is not meaningful for factors."), "mean"); if (!LOGICAL(narm)[0]) { int protecti=0; ans = PROTECT(gsum(x, narm, /*#986, warnOverflow=*/ScalarLogical(FALSE))); protecti++; @@ -683,14 +688,17 @@ SEXP gmean(SEXP x, SEXP narm) // gmin SEXP gmin(SEXP x, SEXP narm) { - if (!isLogical(narm) || LENGTH(narm)!=1 || LOGICAL(narm)[0]==NA_LOGICAL) error(_("%s must be TRUE or FALSE"), "na.rm"); + if (!IS_TRUE_OR_FALSE(narm)) + error(_("%s must be TRUE or FALSE"), "na.rm"); if (!isVectorAtomic(x)) error(_("GForce min can only be applied to columns, not .SD or similar. To find min of all items in a list such as .SD, either add the prefix base::min(.SD) or turn off GForce optimization using options(datatable.optimize=1). More likely, you may be looking for 'DT[,lapply(.SD,min),by=,.SDcols=]'")); - if (inherits(x, "factor") && !inherits(x, "ordered")) error(_("%s is not meaningful for factors."), "min"); + if (inherits(x, "factor") && !inherits(x, "ordered")) + error(_("%s is not meaningful for factors."), "min"); R_len_t i, ix, thisgrp=0; int n = (irowslen == -1) ? length(x) : irowslen; //clock_t start = clock(); SEXP ans; - if (nrow != n) error(_("nrow [%d] != length(x) [%d] in %s"), nrow, n, "gmin"); + if (nrow != n) + error(_("nrow [%d] != length(x) [%d] in %s"), nrow, n, "gmin"); int protecti=0; switch(TYPEOF(x)) { case LGLSXP: case INTSXP: @@ -802,14 +810,17 @@ SEXP gmin(SEXP x, SEXP narm) // gmax SEXP gmax(SEXP x, SEXP narm) { - if (!isLogical(narm) || LENGTH(narm)!=1 || LOGICAL(narm)[0]==NA_LOGICAL) error(_("%s must be TRUE or FALSE"), "na.rm"); + if (!IS_TRUE_OR_FALSE(narm)) + error(_("%s must be TRUE or FALSE"), "na.rm"); if (!isVectorAtomic(x)) error(_("GForce max can only be applied to columns, not .SD or similar. To find max of all items in a list such as .SD, either add the prefix base::max(.SD) or turn off GForce optimization using options(datatable.optimize=1). More likely, you may be looking for 'DT[,lapply(.SD,max),by=,.SDcols=]'")); - if (inherits(x, "factor") && !inherits(x, "ordered")) error(_("%s is not meaningful for factors."), "max"); + if (inherits(x, "factor") && !inherits(x, "ordered")) + error(_("%s is not meaningful for factors."), "max"); R_len_t i, ix, thisgrp=0; int n = (irowslen == -1) ? length(x) : irowslen; //clock_t start = clock(); SEXP ans; - if (nrow != n) error(_("nrow [%d] != length(x) [%d] in %s"), nrow, n, "gmax"); + if (nrow != n) + error(_("nrow [%d] != length(x) [%d] in %s"), nrow, n, "gmax"); // TODO rework gmax in the same way as gmin and remove this *update char *update = (char *)R_alloc(ngrp, sizeof(char)); @@ -947,12 +958,15 @@ SEXP gmax(SEXP x, SEXP narm) // gmedian, always returns numeric type (to avoid as.numeric() wrap..) SEXP gmedian(SEXP x, SEXP narmArg) { - if (!isLogical(narmArg) || LENGTH(narmArg)!=1 || LOGICAL(narmArg)[0]==NA_LOGICAL) error(_("%s must be TRUE or FALSE"), "na.rm"); + if (!IS_TRUE_OR_FALSE(narmArg)) + error(_("%s must be TRUE or FALSE"), "na.rm"); if (!isVectorAtomic(x)) error(_("GForce median can only be applied to columns, not .SD or similar. To find median of all items in a list such as .SD, either add the prefix stats::median(.SD) or turn off GForce optimization using options(datatable.optimize=1). More likely, you may be looking for 'DT[,lapply(.SD,median),by=,.SDcols=]'")); - if (inherits(x, "factor")) error(_("%s is not meaningful for factors."), "median"); + if (inherits(x, "factor")) + error(_("%s is not meaningful for factors."), "median"); const bool isInt64 = INHERITS(x, char_integer64), narm = LOGICAL(narmArg)[0]; int n = (irowslen == -1) ? length(x) : irowslen; - if (nrow != n) error(_("nrow [%d] != length(x) [%d] in %s"), nrow, n, "gmedian"); + if (nrow != n) + error(_("nrow [%d] != length(x) [%d] in %s"), nrow, n, "gmedian"); SEXP ans = PROTECT(allocVector(REALSXP, ngrp)); double *ansd = REAL(ans); switch(TYPEOF(x)) { @@ -1258,12 +1272,15 @@ SEXP gnthvalue(SEXP x, SEXP valArg) { // implemented this similar to gmedian to balance well between speed and memory usage. There's one extra allocation on maximum groups and that's it.. and that helps speed things up extremely since we don't have to collect x's values for each group for each step (mean, residuals, mean again and then variance). SEXP gvarsd1(SEXP x, SEXP narm, Rboolean isSD) { - if (!isLogical(narm) || LENGTH(narm)!=1 || LOGICAL(narm)[0]==NA_LOGICAL) error(_("%s must be TRUE or FALSE"), "na.rm"); + if (!IS_TRUE_OR_FALSE(narm)) + error(_("%s must be TRUE or FALSE"), "na.rm"); if (!isVectorAtomic(x)) error(_("GForce var/sd can only be applied to columns, not .SD or similar. For the full covariance matrix of all items in a list such as .SD, either add the prefix stats::var(.SD) (or stats::sd(.SD)) or turn off GForce optimization using options(datatable.optimize=1). Alternatively, if you only need the diagonal elements, 'DT[,lapply(.SD,var),by=,.SDcols=]' is the optimized way to do this.")); - if (inherits(x, "factor")) error(_("%s is not meaningful for factors."), isSD ? "sd" : "var"); + if (inherits(x, "factor")) + error(_("%s is not meaningful for factors."), isSD ? "sd" : "var"); long double m, s, v; R_len_t i, j, ix, thisgrpsize = 0, n = (irowslen == -1) ? length(x) : irowslen; - if (nrow != n) error(_("nrow [%d] != length(x) [%d] in %s"), nrow, n, "gvar"); + if (nrow != n) + error(_("nrow [%d] != length(x) [%d] in %s"), nrow, n, "gvar"); SEXP sub, ans = PROTECT(allocVector(REALSXP, ngrp)); Rboolean ans_na; switch(TYPEOF(x)) { @@ -1399,14 +1416,17 @@ SEXP gsd(SEXP x, SEXP narm) { SEXP gprod(SEXP x, SEXP narm) { - if (!isLogical(narm) || LENGTH(narm)!=1 || LOGICAL(narm)[0]==NA_LOGICAL) error(_("%s must be TRUE or FALSE"), "na.rm"); + if (!IS_TRUE_OR_FALSE(narm)) + error(_("%s must be TRUE or FALSE"), "na.rm"); if (!isVectorAtomic(x)) error(_("GForce prod can only be applied to columns, not .SD or similar. To multiply all items in a list such as .SD, either add the prefix base::prod(.SD) or turn off GForce optimization using options(datatable.optimize=1). More likely, you may be looking for 'DT[,lapply(.SD,prod),by=,.SDcols=]'")); - if (inherits(x, "factor")) error(_("%s is not meaningful for factors."), "prod"); + if (inherits(x, "factor")) + error(_("%s is not meaningful for factors."), "prod"); int i, ix, thisgrp; int n = (irowslen == -1) ? length(x) : irowslen; //clock_t start = clock(); SEXP ans; - if (nrow != n) error(_("nrow [%d] != length(x) [%d] in %s"), nrow, n, "gprod"); + if (nrow != n) + error(_("nrow [%d] != length(x) [%d] in %s"), nrow, n, "gprod"); long double *s = malloc(ngrp * sizeof(long double)); if (!s) error(_("Unable to allocate %d * %d bytes for gprod"), ngrp, sizeof(long double)); for (i=0; i Date: Fri, 13 Mar 2020 11:46:42 +0800 Subject: [PATCH 08/12] fix tests --- inst/tests/tests.Rraw | 62 +++++++++++++++++++++---------------------- 1 file changed, 31 insertions(+), 31 deletions(-) diff --git a/inst/tests/tests.Rraw b/inst/tests/tests.Rraw index 7cc6819e8f..e161cabe45 100644 --- a/inst/tests/tests.Rraw +++ b/inst/tests/tests.Rraw @@ -1472,11 +1472,11 @@ DT = data.table(a=1:2,b=3:4,c=5:6) test(495.1, setcolorder(DT,c(2,1,3)), data.table(b=3:4,a=1:2,c=5:6)) test(495.2, setcolorder(DT,c(2,1,3)), data.table(a=1:2,b=3:4,c=5:6)) test(496, setcolorder(DT,c("c","a","b")), data.table(c=5:6,a=1:2,b=3:4)) -test(497, setcolorder(DT,c("d","a","b")), error="specify non existing column*.*d") +test(497, setcolorder(DT,c("d","a","b")), error="received non-existing column*.*d") DT = data.table(a = 1:3, b = 2:4, c = 3:5) test(498.1, names(setcolorder(DT, "b")), c("b", "a", "c")) test(498.2, names(setcolorder(DT, c(2, 3))), c("a", "c", "b")) -test(498.3, setcolorder(DT, 1:4), error = "specify non existing column*.*4") +test(498.3, setcolorder(DT, 1:4), error = "received non-existing column*.*4") # Test where neworder=NULL, thus ordered by key and index columns DT = data.table(a = 1:3, b = 2:4, c = 3:5, d = 4:6, key="b") test(498.4, names(setcolorder(DT)), c("b", "a", "c", "d")) @@ -2797,10 +2797,10 @@ test(988, unique(dt, by='B'), dt[!duplicated(df[, 'B'])]) test(989, unique(dt, by='C'), dt[!duplicated(df[, 'C'])]) test(990, unique(dt, by=c('B', 'C')), dt[!duplicated(df[, c('B', 'C')])]) test(991, unique(dt, by=NULL), dt[!duplicated(df)]) -test(991.1, unique(dt, by=4), error="specify non existing column*.*4") +test(991.1, unique(dt, by=4), error="received non-existing column*.*4") test(991.2, unique(dt, by=c(1,3.1)), error="is type 'double' and one or more items in it are not whole integers") test(991.3, unique(dt, by=2:3), dt[!duplicated(df[,c('B','C')])]) -test(991.4, unique(dt, by=c('C','D','E')), error="specify non existing column*.*D") +test(991.4, unique(dt, by=c('C','D','E')), error="received non-existing column*.*D") # :=NULL on factor column in empty data.table, #114 DT = data.table(A = integer(), B = factor()) @@ -2846,7 +2846,7 @@ test(996.07, CJ(1:2, list(1:2, 3), 4:5, sorted = FALSE), data.table(V1 = rep(1:2, each = 4L), V2 = rep(rep(list(1:2, 3), each = 2L), 2L), V3 = rep(4:5, 4L))) test(996.08, CJ(expression(1)), error = "element 1 is non-atomic") -test(996.09, CJ(expression(2), 3, sorted = FALSE), error = "Type 'expression' not supported") +test(996.09, CJ(expression(2), 3, sorted = FALSE), error = "Type 'expression' is not supported") ## complex input support (can't handle sorted yet) test(996.10, CJ(z = 0:1 + (0:1)*1i, b = 1:3, sorted = FALSE), data.table(z = rep(0:1, each=3L) + rep(0:1, each=3L)*1i, b = rep(1:3, 2))) @@ -4158,7 +4158,7 @@ setNumericRounding(old_rounding) DT = data.table(id=INT(1,2,1), val1=3:1, val2=3:1, val3=list(2:3,4:6,7:10)) # 5380 test(1199.1, DT[, sum(.SD), by=id, .SDcols=2:3], data.table(id=1:2, V1=INT(8,4))) #875 made the .SD case work test(1199.2, DT[, sum(.SD), by=id], error="only defined on a data frame with all numeric variables") -test(1199.3, DT[, sum(val3), by=id], error="Type 'list' not supported by GForce sum [(]gsum[)]. Either.*or turn off") +test(1199.3, DT[, sum(val3), by=id], error="Type 'list' is not supported by GForce sum [(]gsum[)]. Either.*or turn off") # Selection of columns, copy column to maintain the same as R <= 3.0.2, in Rdevel, for now # Otherwise e.g. setkey changes the original columns too. TO DO: could allow shallow copy, perhaps. @@ -5434,7 +5434,7 @@ setDF(Y) test(1364.18, setdiff_(X, Y), error = 'x and y must both be data.tables') setDT(Y) test(1364.19, setdiff_(X[0L], Y), X[0L]) -test(1364.20, setdiff_(X, Y, by.x = 'f'), error = 'specify non existing column*.*f') +test(1364.20, setdiff_(X, Y, by.x = 'f'), error = 'received non-existing column*.*f') #test(1364.21, setdiff_(X, Y, by.x = c('f', 'g')), error = 'by.x values [f, g] not present') # now only first no existing column is printed for efficiency test(1364.22, setdiff_(X, Y[0L], by.x = 'a'), data.table(a = c(1, 3, 2), b = factor(c(1L, 3L, 2L)), @@ -6527,13 +6527,13 @@ test(1464.03, rleidv(DT, "b"), c(1L, 1L, 2L, 2L, 3L, 3L, 3L, 4L, 5L, 5L)) test(1464.04, rleid(DT$b), c(1L, 1L, 2L, 2L, 3L, 3L, 3L, 4L, 5L, 5L)) test(1464.05, rleidv(DT, "c"), c(1L, 1L, 2L, 2L, 3L, 3L, 3L, 4L, 5L, 5L)) test(1464.06, rleid(DT$c), c(1L, 1L, 2L, 2L, 3L, 3L, 3L, 4L, 5L, 5L)) -test(1464.07, rleid(as.raw(c(3L, 1L, 2L))), error="Type 'raw' not supported") -test(1464.08, rleidv(DT, 0), error="specify non existing column*.*0") -test(1464.09, rleidv(DT, 5), error="specify non existing column*.*5") +test(1464.07, rleid(as.raw(c(3L, 1L, 2L))), error="Type 'raw' is not supported") +test(1464.08, rleidv(DT, 0), error="received non-existing column*.*0") +test(1464.09, rleidv(DT, 5), error="received non-existing column*.*5") test(1464.10, rleidv(DT, 1:4), 1:nrow(DT)) set.seed(1) DT = data.table( sample(1:2,20,replace=TRUE), sample(1:2,20,replace=TRUE), sample(1:2,20, replace=TRUE)) -test(1464.11, rleidv(DT, 1:4), error="specify non existing column*.*4") +test(1464.11, rleidv(DT, 1:4), error="received non-existing column*.*4") test(1464.12, rleidv(DT, 1:2), ans<-INT(1,2,3,4,5,6,6,6,7,8,8,9,10,11,12,13,14,15,16,17)) test(1464.13, rleidv(DT, 2:1), ans) test(1464.14, rleidv(DT, c(3,1)), INT(1,1,2,2,3,4,5,5,6,7,8,9,10,11,12,13,14,15,16,17)) @@ -7885,8 +7885,8 @@ test(1574.4, X["bar", on="c"], X[2L]) # missed previously # fix for #1376 X = data.table(a=1:3,b=4:6,c=c("foo","bar","baz")) Y = data.table(A=2:4, B=5:7) -test(1575.1, X[Y, on=c(A="a")], error="specify non existing column*.*A") # does not report 'x' or 'i' anymore after switch to colnamesInt -test(1575.2, X[Y, on=c(a="a")], error="specify non existing column*.*a") +test(1575.1, X[Y, on=c(A="a")], error="received non-existing column*.*A") # does not report 'x' or 'i' anymore after switch to colnamesInt +test(1575.2, X[Y, on=c(a="a")], error="received non-existing column*.*a") # work around for issue introduced in v1.9.4, #1396 X = data.table(x=5:1, y=6:10) @@ -13251,9 +13251,9 @@ options(old) test(1962.003, duplicated(DT, fromLast = NA), error = 'must be TRUE or FALSE') test(1962.004, duplicated(DT, by = -1L), - error = 'specify non existing column*.*-1') + error = 'received non-existing column*.*-1') test(1962.005, duplicated(DT, by = 'y'), - error = 'specify non existing column*.*y') + error = 'received non-existing column*.*y') test(1962.0061, duplicated(data.table(NULL)), logical(0L)) test(1962.0062, duplicated(data.table(a = 1L), by = character()), logical()) @@ -13524,7 +13524,7 @@ test(1963.07, shift(DT, -1:1), c(NA, 10L, 9L, 8L, 7L, 6L, 5L, 4L, 3L, 2L))) ## some coverage tests for good measure test(1963.08, shift(DT$x, type = 'some_other_type'), error='should be one of.*lag.*lead') -test(1963.09, shift(as.raw(0:1)), error = 'Unsupported type') +test(1963.09, shift(as.raw(0:1)), error = "Type 'raw' is not supported") test(1963.10, shift(DT, -1:1, type="shift", give.names = TRUE), # new type="shift" #3223 ans <- list(`x_shift_-1` = c(2L, 3L, 4L, 5L, 6L, 7L, 8L, 9L, 10L, NA), x_shift_0 = 1:10, @@ -13724,7 +13724,7 @@ test(1967.621, setnames(x, 1:2, c("a","a")), data.table(a=1:5, a=6:10)) test(1967.622, setnames(x, 1:2, c("a",NA)), error = "NA in 'new' at positions [2]") test(1967.63, setcolorder(x, c(1, 1)), error = 'Item 2 of order (1) is either NA, out of range [1,2], or is duplicated. The new order must be a strict permutation of 1:n') test(1967.64, setcolorder(x, 1+3i), error = 'must be character or numeric') -test(1967.65, setcolorder(x, 300), error = 'specify non existing column*.*300') +test(1967.65, setcolorder(x, 300), error = 'received non-existing column*.*300') test(1967.66, rbindlist(list(x), idcol = FALSE), rbindlist(list(x))) test(1967.67, rbindlist(list(x), idcol = 1+3i), error = 'idcol must be a logical') @@ -13957,7 +13957,7 @@ dimnames(DT) <- list(NULL, 1:5) test(1984.21, names(DT), paste0(1:5)) DT = data.table(a = 1:10) test(1984.22, na.omit(DT, invert = 'a'), error="'invert' must be logical") -test(1984.23, na.omit(DT, cols = 'b'), error="specify non existing column*.*b") +test(1984.23, na.omit(DT, cols = 'b'), error="received non-existing column*.*b") #test(1984.24, na.omit(DT, cols = c('b', 'c')), error="Columns [b, c] don't") # only first non-existing col is now reported for efficiency ### idcol = TRUE behavior of rbindlist test(1984.25, rbindlist(list(DT[1L], DT[2L]), idcol = TRUE), data.table(.id=1:2, a=1:2)) @@ -14478,15 +14478,15 @@ if (test_bit64) { test(2019, DT[2:6, sum(v), id], data.table(id=1:2, V1=bit64::as.integer64(c(5L,15L)))) # gather, case of int64 and irows } DT = data.table(id = c(1L,1L,2L), v = as.raw(0:2)) -test(2020.01, DT[, min(v), by=id], error="'raw' not supported by GForce min") -test(2020.02, DT[, max(v), by=id], error="'raw' not supported by GForce max") -test(2020.03, DT[, median(v), by=id], error="'raw' not supported by GForce median") -test(2020.04, DT[, head(v, 1), by=id], error="'raw' not supported by GForce head") -test(2020.05, DT[, tail(v, 1), by=id], error="'raw' not supported by GForce tail") -test(2020.06, DT[, v[1], by=id], error="'raw' not supported by GForce subset") -test(2020.07, DT[, sd(v), by=id], error="'raw' not supported by GForce sd") -test(2020.08, DT[, var(v), by=id], error="'raw' not supported by GForce var") -test(2020.09, DT[, prod(v), by=id], error="'raw' not supported by GForce prod") +test(2020.01, DT[, min(v), by=id], error="'raw' is not supported by GForce min") +test(2020.02, DT[, max(v), by=id], error="'raw' is not supported by GForce max") +test(2020.03, DT[, median(v), by=id], error="'raw' is not supported by GForce median") +test(2020.04, DT[, head(v, 1), by=id], error="'raw' is not supported by GForce head") +test(2020.05, DT[, tail(v, 1), by=id], error="'raw' is not supported by GForce tail") +test(2020.06, DT[, v[1], by=id], error="'raw' is not supported by GForce subset") +test(2020.07, DT[, sd(v), by=id], error="'raw' is not supported by GForce sd") +test(2020.08, DT[, var(v), by=id], error="'raw' is not supported by GForce var") +test(2020.09, DT[, prod(v), by=id], error="'raw' is not supported by GForce prod") DT = data.table(id = c(1L,1L,2L,2L), v = c(1L, 2L, NA, NA)) test(2020.10, DT[, median(v), id], data.table(id=1:2, V1=c(1.5, NA))) # median whole group has NAs @@ -15438,7 +15438,7 @@ test(2060.208, fcoalesce(fkt, 'b'), error='Item 1 is a factor but item 2 is not test(2060.209, fcoalesce(str, factor('b')), error='Item 2 is a factor but item 1 is not a factor. When factors are involved, all items must be factor') test(2060.212, fcoalesce(list(1), list(2)), error="The first argument is a list, data.table or data.frame. In this case there should be no other arguments provided.") test(2060.213, fcoalesce(bool, c(TRUE, FALSE)), error="Item 2 is length 2 but the first item is length 3. Only singletons are recycled") -test(2060.214, fcoalesce(as.raw(0), as.raw(1)), error="Unsupported type: raw") +test(2060.214, fcoalesce(as.raw(0), as.raw(1)), error="Type 'raw' is not supported") test(2060.215, fcoalesce(bool, list()), bool) test(2060.216, fcoalesce(structure(c(1:2,NA,4L), class=c("a")), c(NA,NA,3L,4L)),, error="Item 2 has a different class than item 1") # different classes of x arg #3660 @@ -15665,7 +15665,7 @@ DT1 = data.table(a = sample(3L, 15L, TRUE) + .1, b=sample(c(TRUE, FALSE, NA), 15 DT2 = data.table(a = sample(3L, 6L, TRUE) + .1, b=sample(c(TRUE, FALSE, NA), 6L, TRUE)) test(2069.32, DT1[DT2, .(y = sum(b, na.rm=TRUE)), by=.EACHI, on=c(a = 'a', b="b")]$y, rep(0L, 6L)) DT = data.table(z = 1i) -test(2069.33, DT[DT, on = 'z'], error = "Type 'complex' not supported for joining/merging") +test(2069.33, DT[DT, on = 'z'], error = "Type 'complex' is not supported for joining/merging") # forder verbose message when !isReallyReal Date, #1738 DT = data.table(d=sample(seq(as.Date("2015-01-01"), as.Date("2015-01-05"), by="days"), 20, replace=TRUE)) @@ -15735,7 +15735,7 @@ test(2072.036, fifelse(test_vec_na, 1+0i, 0+0i), as.complex(out_vec_na)) test(2072.037, fifelse(test_vec_na, rep(1+0i,12L), 0+0i), as.complex(out_vec_na)) test(2072.038, fifelse(test_vec_na, rep(1+0i,12L), rep(0+0i,12L)), as.complex(out_vec_na)) test(2072.039, fifelse(test_vec_na, 1+0i, rep(0+0i,12L)), as.complex(out_vec_na)) -test(2072.040, fifelse(test_vec, as.raw(0), as.raw(1)), error="Type raw is not supported.") +test(2072.040, fifelse(test_vec, as.raw(0), as.raw(1)), error="Type 'raw' is not supported") test(2072.041, fifelse(TRUE,1,as.Date("2019-07-07")), error="'yes' has different class than 'no'. Please") test(2072.042, fifelse(TRUE,1L,factor(letters[1])), error="'yes' has different class than 'no'. Please") test(2072.043, fifelse(TRUE, list(1:5), list(5:1)), list(1:5)) @@ -16666,7 +16666,7 @@ test(2127.13, fcase(test_vec1, 1+0i, test_vec2, 0+0i, default=2+0i), as.complex( test(2127.14, fcase(test_vec1, list(1), test_vec2, list(0),default=list(2)), list(1,1,1,1,1, 2, 0, 0, 0, 0, 0)) test(2127.15, fcase(test_vec1, as.Date("2019-10-11"), test_vec2, as.Date("2019-10-14"),default=as.Date("2019-10-15")), c(rep(as.Date("2019-10-11"),5),as.Date("2019-10-15"),rep(as.Date("2019-10-14"),5))) test(2127.16, fcase(test_vec1, factor("a", levels=letters[1:3]), test_vec2, factor("b", levels=letters[1:3]),default=factor("c", levels=letters[1:3])), factor(c(rep("a",5),"c",rep("b",5)), levels=letters[1:3])) -test(2127.17, fcase(test_vec1, as.raw(1), test_vec2, as.raw(0)), error="Type raw is not supported.") +test(2127.17, fcase(test_vec1, as.raw(1), test_vec2, as.raw(0)), error="Type 'raw' is not supported") test(2127.18, fcase(test_vec1, factor("a", levels=letters[1]), test_vec2, factor("b", levels=letters[1:3])), error="Argument #2 and argument #4 are both factor but their levels are different.") test(2127.19, fcase(test_vec1, factor("a", levels=letters[1:2]), test_vec2, factor("b", levels=letters[1:2]),default=factor("c", levels=letters[1:3])), error="Resulting value and 'default' are both type factor but their levels are different.") test(2127.20, fcase(test_vec1, 1L:10L, test_vec2, 3L:12L, test_vec2), error="Received 5 inputs; please supply an even number of arguments in ..., consisting of logical condition, resulting value pairs (in that order). Note that the default argument must be named explicitly, e.g., default=0") From 58460dd2cd274c4d47db4adfdb1bc9a15e56e4ae Mon Sep 17 00:00:00 2001 From: Michael Chirico Date: Fri, 13 Mar 2020 12:09:43 +0800 Subject: [PATCH 09/12] nafill tests --- inst/tests/nafill.Rraw | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/inst/tests/nafill.Rraw b/inst/tests/nafill.Rraw index 99a404b4d9..52c561e12d 100644 --- a/inst/tests/nafill.Rraw +++ b/inst/tests/nafill.Rraw @@ -130,15 +130,15 @@ test(4.03, colnamesInt(dt, 1), 1L) test(4.04, colnamesInt(dt, c("a","d")), c(1L, 3L)) test(4.05, colnamesInt(dt, c(1L, 3L)), c(1L, 3L)) test(4.06, colnamesInt(dt, c(1, 3)), c(1L, 3L)) -test(4.07, colnamesInt(dt, c("a", "e")), error="specify non existing column*.*e") -test(4.08, colnamesInt(dt, c(1L, 4L)), error="specify non existing column*.*4") -test(4.09, colnamesInt(dt, c(1, 4)), error="specify non existing column*.*4") -test(4.10, colnamesInt(dt, c("a", NA)), error="specify non existing column*.*NA") -test(4.11, colnamesInt(dt, c(1L, NA)), error="specify non existing column") -test(4.12, colnamesInt(dt, c(1, NA)), error="specify non existing column") -test(4.13, colnamesInt(dt, c("a","d","a"), check_dups=TRUE), error="specify duplicated column") -test(4.14, colnamesInt(dt, c(1L, 3L, 1L), check_dups=TRUE), error="specify duplicated column") -test(4.15, colnamesInt(dt, c(1, 3, 1), check_dups=TRUE), error="specify duplicated column") +test(4.07, colnamesInt(dt, c("a", "e")), error="received non-existing column*.*e") +test(4.08, colnamesInt(dt, c(1L, 4L)), error="received non-existing column*.*4") +test(4.09, colnamesInt(dt, c(1, 4)), error="received non-existing column*.*4") +test(4.10, colnamesInt(dt, c("a", NA)), error="received non-existing column*.*NA") +test(4.11, colnamesInt(dt, c(1L, NA)), error="received non-existing column") +test(4.12, colnamesInt(dt, c(1, NA)), error="received non-existing column") +test(4.13, colnamesInt(dt, c("a","d","a"), check_dups=TRUE), error="received duplicate column(s)") +test(4.14, colnamesInt(dt, c(1L, 3L, 1L), check_dups=TRUE), error="received duplicate column(s)") +test(4.15, colnamesInt(dt, c(1, 3, 1), check_dups=TRUE), error="received duplicate column(s)") test(4.16, colnamesInt(dt, list("a")), error="must be character or numeric") test(4.17, colnamesInt(dt, NA), error="must be character or numeric") test(4.18, colnamesInt(dt, character()), integer()) From cdd03ed39bb12b0089a193ff634f8549c028a930 Mon Sep 17 00:00:00 2001 From: Michael Chirico Date: Thu, 8 Jul 2021 18:58:59 -0700 Subject: [PATCH 10/12] restore from master --- inst/po/en@quot/LC_MESSAGES/R-data.table.mo | Bin 0 -> 91028 bytes inst/po/en@quot/LC_MESSAGES/data.table.mo | Bin 0 -> 143608 bytes inst/po/zh_CN/LC_MESSAGES/R-data.table.mo | Bin 0 -> 89247 bytes inst/po/zh_CN/LC_MESSAGES/data.table.mo | Bin 0 -> 142657 bytes po/R-data.table.pot | 1994 ++++++++ po/R-zh_CN.po | 2768 +++++++++++ po/data.table.pot | 1266 +---- po/zh_CN.po | 4915 +++++++++++++++++++ 8 files changed, 9822 insertions(+), 1121 deletions(-) create mode 100644 inst/po/en@quot/LC_MESSAGES/R-data.table.mo create mode 100644 inst/po/en@quot/LC_MESSAGES/data.table.mo create mode 100644 inst/po/zh_CN/LC_MESSAGES/R-data.table.mo create mode 100644 inst/po/zh_CN/LC_MESSAGES/data.table.mo create mode 100644 po/R-data.table.pot create mode 100644 po/R-zh_CN.po create mode 100644 po/zh_CN.po diff --git a/inst/po/en@quot/LC_MESSAGES/R-data.table.mo b/inst/po/en@quot/LC_MESSAGES/R-data.table.mo new file mode 100644 index 0000000000000000000000000000000000000000..95fcad832b98620b8aeff0f526f36f8b0a2704f6 GIT binary patch literal 91028 zcmd4437j2Onf_nRCPdj6LAFXDbT@S0EQA0ZI?&l55CUca6e79ZeYPb$x? zs#B-V@}74)?>Y6&!}hr?;qQXIlH@q>s>71x@V%4d)hFv}lKfy{lAH=Y3@!zaSmbyS zxF6@w0QUu-1Ga%L1kV9)1rGo}10Do^4J?7*2j_!FEl!eCz;nQHZ~$BYel6hsrzgqd zIX??L0lXAc`Z{?@+9z1unRosj3jw1xC}fNJRdw98~~38cY*W3 z+d$R({oq{i%iw3gUxSx|AE(kC;N#Eq@|*`=!TA;7+2FfDnkM-X_yO>^vy$Z5G{jfI z^EuzzlO$9*xdT-FzX9?uIbd0moC~fBcq2#`B>w^`|4)D^n9`URfqmdw@cH0&@T&n= z^d`v@Ie$Ai2L2ILJ;s(N$xYyk!S{nl^Ri>X&x6N-KLK9^&N6-jb1cqVutcs}?Xa5LBrehXB4KV~I;3C;&E2A=||9RC2$ z1wREUpC5sG@9)54z>ZaZeFa$Id_y>YKX^0ep9I^$OIJHxZ2)iOd=k|4Ict(+AMkPD z{@|gY=;;Zd@;@6CU2Fttx?~vK3w$F;7bJIpcY@yq-wD2wPF4S{y};Y!MsN=2?*nVR z@Lo{$UwEOv{{!H4oPP+s7Cej2JPdpi$bW(aXEQ z6#O|T`a6`yJPEuA+#jribHPdQ9Pm}(0Qgn#A#mAx-U-gVBuVxLe*nG>{4vN-N?rlc zcYybSo#1~5JP{&0lJm8o%6&Dc_Ai4U1|JUh-@GA74&nU6;1j^lfU3vCpy=Sxjm{4i zfGYoTQ1zVz>9XYAAS9FgI$+Nx+Jf_^f!n}$fsk}^%w`||SAZ(l=Rle``5vfz7hOgf z!5v^X_-~-v{|P)1{1&(X{3EyoTyTY_9|TY5{8q3Z{1`~p zla42O`L6{vPCo*w9p^k5-U^-$-UdDuJOe!J$|QlLk_*7Iz!!r1fu97Q3w{<%!6#n@ z?Sj{VH-gUw)xHOAaXLBy9OQfv_MUj!ksWF16$DEJys?|Ub>6nr13_WlWY1UQ$%sa=c^|WQ^A`-(a(Fpqru;R z$AX7elH|2uHz>OJG`I+S%n)q^o(=8~J_URL90qrRYlofw?*-q@`H#Re!PjhaIrL?4 zg7e>lPX!xQ@5i5kdVj}uAJ2WD+UW(L%J%@+4Yu!adfg13!1?RIx!^tEsY(Z)2tIBE z83A^Ij|Z;-RletdCxLA={)OOtP|uHnr+_a8mCxOv+Wor$=hb|CZ3Vlz{`a7s|2(*G zFL+Je`}yK)pgpetUBKUihjM;-!})0yRKL`~{lM3Qo#0zQvPixNs$W+&y&YZ(p2qnD zpxWoaaryu}1=MpTQ1`D0=QoD)cYw!p{TtxH;BUYy!2M}_x-uz)qOVVYYTvzfIzPVv zyqNQ=K=toi!G&$`UGQa`f0sslC3xK=<>mU3Q%UkX&TqQb<-%dtdHK4)Be}i=JPW)K zTnauDRJlI@E(E^|YFr)(F}xT&1$;VqH>mbF>uE`H7kCHwOzc6&IoSvTyzKZh(`0wC>bix+!VQ>R@{`1j&z*m8)$Niw% z?VuO9d|nT(;QYCujc-ux^_UkX$$8)^a2a?LsQdSVo5A0KD&G@dwQb^iM}P~+|x@JryW;MLS;h|U(Bef%Yi74V3cdV9VPyqxpXZu4>QOt8xNm%zio z6PE_)YKv@By$BJoOdOJh%zm z8+OZ71U?8(^5B1hoxE`S-!gW%{?b>wo^cgKP~v6$*ZTN78&vyU460mLfO`HJpvv(|@ImknQ0;Kb>%4#O1W)Dsd*I{2 zLuu3l!A@{FcqT}(lbxXW+$5-cUkmO4-v=%L=e?fa;0CY`9`N^`&lIS3y%~f=lh=c= zq~x?WI3Ij1xQ_E5f~wbh-4^!9o@sPaAqRR2F6 zRK4E|fFsjC- zN(UYWJ_B3}-Uc2GehXX${svqD_P*E4c|G`8&OZS@4*Vi0I{7xJ{yOST*Ap%Ycr&;U z*Y5!rgZ~1mUcUy_pHH~UaXzT=wh){PZU?Uhp9ktaKL$5~zXe6V7em|{7u!I!?@sUl z@adrX^Vy)vc?&3h_;PSR@Jrxxz<&o-j>+K=t$75ArOy z9u&R25o`zl4ZIQj1$ZDCO@7Gh{j3kWzWM@C_5B675d0&k_F4E(F0Yq^J)BQ~qPus2 zE5Y}HqPPD6MGy1u@$s<~gyfU;;1RkH>bZkI;`DMPsP^sv)!vIi^}`upC)f)v0*Ap~ z@Rgw6_f=5oj=k6Q=955`_f}Bt@lo*LHp>1{=L5(8v)6xlz#;HN(!BuGbMFAxf!_jE zzOH}qc3TXp-L43DJ-C$fJHWG)9y}X7`eQyGH-IN`z74z%d>)vB`+wZ|XD4_v=dT3M z0RIV8`~DJC{rCDrlDrPw7n~2i2|Sv5+y|J_)M*KM$%OANx7l6g&r%|LAw%MV#OG1#j=qfvW$0UvxQmHn@`W z$$%dM)ellml>gqK`s*riBX|RNG5BS0CwS7A9bW}*=KRpFcsmY*YTx_8Tfx1)icJc> z6cpWU`I^(k)4*4AetW=WU-##}2I{?k09CJ(zTtGZ2^8Ht6;yw`2h{lZJa{;`_rJTG zeLQ#@=bhkb;60$)^+(`2;DPtMy?r5=a{g*i<^3?Ie7*xN0e=nZxvu~4>+8X5IPVYV zUjlF8{0AV-os56e^Vtci-meCAz4R^T-wVP0IX?qb`Im#ofLlPlcNf?T-U6y0J_RlV z?*s1y_y4y0k3J0ca6bBg*Z&T14(Hzh zPksm<2mTloA2{G4Z>P(^cFtb{>i!48bHT5HDR}hvoc_)RPvX1@s(vpA=Yp>T&jCLQ z4uF3Ic{CaLzWa~X{=oH&LmqZMc?5Vm_df!5fWHJg!Q+4Ecs_U}=huKL_s!tV;B&wa zgNOde?|&9Ng!6~MCxE{KRgXh|?Bnii@F31F2hRqFz_Y;DfvdrL@+w)3L?eRCD%J*JS>33DZFz_qjHt=Ea`QV0M zdp_R=MGxNx&j)`V@T}kX_3OdqTz?Lze)uG)aktlRJ-;)-QO;ins$2*CkK02>f~w~z zxB>h}Q0eCU&YzzI^}e@*J>Y)_T=;wMmmT1NTz?DrRPZ0cOTi`o>-^&;Q15#=xD>n{ zJQMsfcm#OhADlktfugI6z*E5{DEhe_JR1Bicr5t8;M>4s{^<4m7`TY@KZ5G-MNqTa z=`!#E@M>@u*w@x(^nW*aH|O60RgTx})n;<&%isj(zXw&1#@=m4CqD!A{*HaxY&`dY zmvR0AQ003F>;_NUx6Sm0CxIt${svIv_Mbu3=OOS!@R0r5Opjd%KA!UlQ003*sBypV zV?3WuP|uHpr+_a5mCuL4UhoG2PuaiC#@8UIa=aP55d1PI|518Co5`Ce;?#Hw*WVa$ zpU1VC|7ZZ*hwBsI>EN}X`s*E_^1BPHgWmzK0ym=Utpnc$E&%@*JPzzWsLk}K3qd`% z0o48L!}+_y`8UDixqc8z)xlsFcm;S4SOISXmxI3pMVCE?v>89Y5xki5SAgo@?|}>3 zlH_OLt2j>&YcqS}gJ6^EPddEK{70WYqRr&OlaKWBje|#${;A+O;EO@M@3Wxz<3UG} zFL)NHaajdl3|q*0@ZFG z1($();RI2;EC)sBH-P7X_kgRwNn>f7`HxpZ8; z!3#$BI0aNgg;2JRP^ZE}5Y=Gb7`qRK$ z!K+p{o&FRQT`pMZ{WJ=uoZk+rU+)3uf%~uW{7wT!4@*Ju!*f9Kopqr2#}-iiegi0a zxd~Leyb)A;9lF}v^(^pV&MyTahoomsTQUOnf@;sV2D}#>@85!5 z;Bgl@y{!c$KemB2@FuVX{t|o*c+xs=mwQ2_`#g9P_*3w3aQtGI)6WLgZuf#3k6!@S zf)9Zz_k#7_{uh83a(*kQa^4R<7Ch+^r-ucg=>Ht>EU*DePk39v?||aZ$6o4kBL!8j zt3i#AX9RpccsA#+0Ox{V0L4Fk35xDEJ+aOF(PdE2-wlc`?+3-lehMA{{t8roCL6q* zdxMf&2ZQ^8>%don8$sps6Hw0`vau~GgHHf;{!~!o=vkoX;(egXbmx12{MK8UVx0#+d z0N%*?E#QG$^b0#td=*wSY9%Mf@t^}7p9x&EoAc>RAE@Gyk1#z_yT=bj8+3f=;0Jlzkf z-5vx_1NYzRxCB)Fw}PUFzXip2z6NSM9#!`K>jJOi{8I2_@IFxd^FPCRx!>viS)khY zL!j#aui)#zPlI}YZNU3`kh-i<0{%Y5F^}Irurr@$JB0iH5YGRB-zt;-e#&qC{Vm4_ z?U(=ecU(V>gJEHR>YKOn`=j7FX-Nj`?bHjz(0hG?+({=`c4kf*54M6hq?Yg zc4lgdjiaZAw4dPmeH=r)^~L=D z8b_V;UvNma>hHT8J2~$Ij{@Hc{tbuze$4^-0>Xe|0$jI_H=1`yuc@b(6n)I1VnP*R{v;jQ&2t_0=Hi zpZ(p<|Nj<#f6gx@KjwTf>0iM4hdIPgN5Vb910nq<`Tae9|AgZRjxUEad-Lr19HSxK zSh$XgkigcA{~p2pPw@MukVdirl{5L@a2_5p*bq*-dFB}X4r$&2O7`mSxBNbc;{ei} z4Yq;tukbT@1NVN#4ar9Ry^`}aU^|IcfUtj?*Ves%<@g`Y_1DXN@y9#E`A7Ku8-D)` zls+J)`0a4-)jH>I5$A|6^V7V6^9sM0g)|@I{Ouem=dfDi(Ld*0e}4#R{*m9W=h(&Z zORmk~9oK|=TuPR3uD|DU?9cU+IX{=*l8f)+{No(Y3+a#H-pyQ}6VCaW+{W*dxW0hn z1kQiT@uP5mFJ0q!HrM`*;{{y*BL{3g`8?

*D^Vkp4LEpSd=dYuAGJasD-q?Hs6T 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 R)&5dvZ6Xy4=ZA3de*vbYzLEd{ literal 0 HcmV?d00001 diff --git a/inst/po/en@quot/LC_MESSAGES/data.table.mo b/inst/po/en@quot/LC_MESSAGES/data.table.mo new file mode 100644 index 0000000000000000000000000000000000000000..5bc184735c5016b975a7ca1891418f616a8dc13b GIT binary patch literal 143608 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 dQ2Y|nD*h={d}g8I{{=Wy;E@0T literal 0 HcmV?d00001 diff --git a/inst/po/zh_CN/LC_MESSAGES/R-data.table.mo b/inst/po/zh_CN/LC_MESSAGES/R-data.table.mo new file mode 100644 index 0000000000000000000000000000000000000000..fd6955445577f14542f1f682448760eee7ea9f51 GIT binary patch literal 89247 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࠳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

7<*>F>HjQHluRMGpB*p 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 MWznZRYBHkrFPXHgQ2+n{ literal 0 HcmV?d00001 diff --git a/po/R-data.table.pot b/po/R-data.table.pot new file mode 100644 index 0000000000..ad00f12772 --- /dev/null +++ b/po/R-data.table.pot @@ -0,0 +1,1994 @@ +msgid "" +msgstr "" +"Project-Id-Version: data.table 1.13.1\n" +"POT-Creation-Date: 2020-10-17 12:05\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=CHARSET\n" +"Content-Transfer-Encoding: 8bit\n" + + +msgid "data.table package loaded. When developing don't load package" +msgstr "" + +msgid "Internal error -- difftime objects may not be added to IDate, but Ops dispatch should have intervened to prevent this" +msgstr "" + +msgid "binary + is not defined for \"IDate\" objects" +msgstr "" + +msgid "can only subtract from \"IDate\" objects" +msgstr "" + +msgid "Internal error: storage mode of IDate is somehow no longer integer" +msgstr "" + +msgid "unary - is not defined for \"IDate\" objects" +msgstr "" + +msgid "Internal error -- difftime objects may not be subtracted from IDate, but Ops dispatch should have intervened to prevent this" +msgstr "" + +msgid "Valid options for ms are 'truncate'," +msgstr "" + +msgid "'nearest', and 'ceil'." +msgstr "" + +msgid "as.data.table.array method should only be called for arrays with 3+ dimensions; use the matrix method for 2-dimensional arrays" +msgstr "" + +msgid "Argument 'value.name' must be scalar character, non-NA and at least one character" +msgstr "" + +msgid "Argument 'sorted' must be scalar logical and non-NA" +msgstr "" + +msgid "Argument 'na.rm' must be scalar logical and non-NA" +msgstr "" + +msgid "Please provide either 'key' or 'sorted', but not both." +msgstr "" + +msgid "Argument 'value.name' should not overlap with column names in result:" +msgstr "" + +msgid "POSIXlt column type detected and converted to POSIXct. We do not recommend use of POSIXlt at all because it uses 40 bytes to store one date." +msgstr "" + +msgid "Item" +msgstr "" + +msgid "has" +msgstr "" + +msgid "rows but longest item has" +msgstr "" + +msgid "; recycled with remainder." +msgstr "" + +msgid "has 0 rows but longest item has" +msgstr "" + +msgid "; filled with NA" +msgstr "" + +msgid "A column may not be called .SD. That has special meaning." +msgstr "" + +msgid "class must be length 1" +msgstr "" + +msgid "between has been passed an argument x of type logical" +msgstr "" + +msgid "'between' function the 'x' argument is a POSIX class while 'lower' was not, coercion to POSIX failed with:" +msgstr "" + +msgid "'between' function the 'x' argument is a POSIX class while 'upper' was not, coercion to POSIX failed with:" +msgstr "" + +msgid "'between' lower= and upper= are both POSIXct but have different tzone attributes:" +msgstr "" + +msgid ". Please align their time zones." +msgstr "" + +msgid "'between' arguments are all POSIXct but have mismatched tzone attributes:" +msgstr "" + +msgid ". The UTC times will be compared." +msgstr "" + +msgid "trying to use integer64 class when 'bit64' package is not installed" +msgstr "" + +msgid "optimised between not available for this data type, fallback to slow R routine" +msgstr "" + +msgid "Not yet implemented NAbounds=TRUE for this non-numeric and non-character type" +msgstr "" + +msgid "Some lower>upper for this non-numeric and non-character type" +msgstr "" + +msgid "RHS has length()" +msgstr "" + +msgid "; expecting length 2." +msgstr "" + +msgid "c" +msgstr "" + +msgid "Perhaps you meant %s?" +msgstr "" + +msgid "The first element should be the lower bound(s);" +msgstr "" + +msgid "the second element should be the upper bound(s)." +msgstr "" + +msgid "forderv(query) took ..." +msgstr "" + +msgid "Generating final logical vector ..." +msgstr "" + +msgid "done in" +msgstr "" + +msgid "%s is type %s which is not supported by data.table join" +msgstr "" + +msgid "Attempting roll join on factor column when joining %s to %s. Only integer, double or character columns may be roll joined." +msgstr "" + +msgid "Matching %s factor levels to %s factor levels." +msgstr "" + +msgid "Coercing factor column %s to type character to match type of %s." +msgstr "" + +msgid "Matching character column %s to factor levels in %s." +msgstr "" + +msgid "Incompatible join types: %s (%s) and %s (%s). Factor columns must join to factor or character columns." +msgstr "" + +msgid "%s has same type (%s) as %s. No coercion needed." +msgstr "" + +msgid "Coercing all-NA %s (%s) to type %s to match type of %s." +msgstr "" + +msgid "Incompatible join types: %s (%s) and %s (%s)" +msgstr "" + +msgid "Coercing %s column %s%s to type integer64 to match type of %s." +msgstr "" + +msgid "Incompatible join types: %s is type integer64 but %s is type double and contains fractions" +msgstr "" + +msgid "Coercing double column %s (which contains no fractions) to type integer to match type of %s" +msgstr "" + +msgid "Coercing integer column %s to type double to match type of %s which contains fractions." +msgstr "" + +msgid "Coercing integer column %s to type double for join to match type of %s." +msgstr "" + +msgid "on= matches existing key, using key" +msgstr "" + +msgid "on= matches existing index, using index" +msgstr "" + +msgid "Calculated ad hoc index in %s" +msgstr "" + +msgid "Non-equi join operators detected ..." +msgstr "" + +msgid "roll is not implemented for non-equi joins yet." +msgstr "" + +msgid "forder took ..." +msgstr "" + +msgid "Generating group lengths ..." +msgstr "" + +msgid "Generating non-equi group ids ..." +msgstr "" + +msgid "Column name '_nqgrp_' is reserved for non-equi joins." +msgstr "" + +msgid "Recomputing forder with non-equi ids ..." +msgstr "" + +msgid "Found %d non-equi group(s) ..." +msgstr "" + +msgid "Starting bmerge ..." +msgstr "" + +msgid "bmerge done in" +msgstr "" + +msgid "cedta decided '%s' wasn't data.table aware. Here is call stack with [[1L]] applied:" +msgstr "" + +msgid "key argument of data.table() must be character" +msgstr "" + +msgid "Object '" +msgstr "" + +msgid "' not found. Perhaps you intended" +msgstr "" + +msgid "," +msgstr "" + +msgid "or" +msgstr "" + +msgid "more" +msgstr "" + +msgid "' not found amongst" +msgstr "" + +msgid "and" +msgstr "" + +msgid "Provide either by= or keyby= but not both" +msgstr "" + +msgid "Ignoring keyby= because j= is not supplied" +msgstr "" + +msgid "Ignoring by= because j= is not supplied" +msgstr "" + +msgid "When on= is provided but not i=, on= must be a named list or data.table|frame, and a natural join (i.e. join on common names) is invoked. Ignoring on= which is '" +msgstr "" + +msgid "'." +msgstr "" + +msgid "i and j are both missing so ignoring the other arguments. This warning will be upgraded to error in future." +msgstr "" + +msgid "mult argument can only be 'first', 'last' or 'all'" +msgstr "" + +msgid "roll must be a single TRUE, FALSE, positive/negative integer/double including +Inf and -Inf or 'nearest'" +msgstr "" + +msgid "roll is '" +msgstr "" + +msgid "' (type character). Only valid character value is 'nearest'." +msgstr "" + +msgid "rollends must be a logical vector" +msgstr "" + +msgid "rollends must be length 1 or 2" +msgstr "" + +msgid "nomatch= must be either NA or NULL (or 0 for backwards compatibility which is the same as NULL)" +msgstr "" + +msgid "which= must be a logical vector length 1. Either FALSE, TRUE or NA." +msgstr "" + +msgid "which==" +msgstr "" + +msgid "(meaning return row numbers) but j is also supplied. Either you need row numbers or the result of j, but only one type of result can be returned." +msgstr "" + +msgid "which=NA with nomatch=0 would always return an empty vector. Please change or remove either which or nomatch." +msgstr "" + +msgid "j must be provided when with=FALSE" +msgstr "" + +msgid "The symbol .. is invalid. The .. prefix must be followed by at least one character." +msgstr "" + +msgid "Variable '" +msgstr "" + +msgid "' is not found in calling scope. Looking in calling scope because you used the .. prefix." +msgstr "" + +msgid "Variable '.." +msgstr "" + +msgid "' does exist in calling scope though, so please just removed the .. prefix from that variable name in calling scope." +msgstr "" + +msgid "Both '" +msgstr "" + +msgid "' and '.." +msgstr "" + +msgid "' exist in calling scope. Please remove the '.." +msgstr "" + +msgid "' variable in calling scope for clarity." +msgstr "" + +msgid "Internal error: DT[, ..var] should be dealt with by the branch above now." +msgstr "" + +msgid "' is not found in calling scope. Looking in calling scope because you set with=FALSE. Also, please use .. symbol prefix and remove with=FALSE." +msgstr "" + +msgid "You have wrapped := with {} which is ok but then := must be the only thing inside {}. You have something else inside {} as well. Consider placing the {} on the RHS of := instead; e.g. DT[,someCol:={tmpVar1<-...;tmpVar2<-...;tmpVar1*tmpVar2}" +msgstr "" + +msgid ":= with keyby is only possible when i is not supplied since you can't setkey on a subset of rows. Either change keyby to by or remove i" +msgstr "" + +msgid "nomatch isn't relevant together with :=, ignoring nomatch" +msgstr "" + +msgid "not-join '!' prefix is present on i but nomatch is provided. Please remove nomatch." +msgstr "" + +msgid "Operator := detected in i, the first argument inside DT[...], but is only valid in the second argument, j. Most often, this happens when forgetting the first comma (e.g. DT[newvar := 5] instead of DT[ , new_var := 5]). Please double-check the syntax. Run traceback(), and debugger() to get a line number." +msgstr "" + +msgid "is not found in calling scope" +msgstr "" + +msgid "When the first argument inside DT[...] is a single symbol (e.g. DT[var]), data.table looks for var in calling scope." +msgstr "" + +msgid "i is invalid type (matrix). Perhaps in future a 2 column matrix could return a list of elements of DT (in the spirit of A[B] in FAQ 2.14). Please report to data.table issue tracker if you'd like this, or add your comments to FR #657." +msgstr "" + +msgid "When i is a data.table (or character vector), the columns to join by must be specified using 'on=' argument (see ?data.table), by keying x (i.e. sorted, and, marked as sorted, see ?setkey), or by sharing column names between x and i (i.e., a natural join). Keyed joins might have further speed benefits on very large data due to x being sorted in RAM." +msgstr "" + +msgid "Attempting to do natural join but no common columns in provided tables" +msgstr "" + +msgid "Joining but 'x' has no key, natural join using" +msgstr "" + +msgid "not-join called with 'by=.EACHI'; Replacing !i with i=setdiff_(x,i) ..." +msgstr "" + +msgid "Constructing irows for '!byjoin || nqbyjoin' ..." +msgstr "" + +msgid "Internal error. Cannot by=.EACHI when joining to an index, yet" +msgstr "" + +msgid "Internal error. irows has length in by=.EACHI" +msgstr "" + +msgid "Reorder irows for 'mult==\"all\" && !allGrp1' ..." +msgstr "" + +msgid "Reordering %d rows after bmerge done in ..." +msgstr "" + +msgid "logical error. i is not a data.table, but 'on' argument is provided." +msgstr "" + +msgid "i has evaluated to type" +msgstr "" + +msgid ". Expecting logical, integer or double." +msgstr "" + +msgid "i evaluates to a logical vector length" +msgstr "" + +msgid "but there are" +msgstr "" + +msgid "rows. Recycling of logical i is no longer allowed as it hides more bugs than is worth the rare convenience. Explicitly use rep(...,length=.N) if you really need to recycle." +msgstr "" + +msgid "Internal error: notjoin but byjoin or !integer or nomatch==NA" +msgstr "" + +msgid "Inverting irows for notjoin done in ..." +msgstr "" + +msgid "with=FALSE together with := was deprecated in v1.9.4 released Oct 2014. Please wrap the LHS of := with parentheses; e.g., DT[,(myVar):=sum(b),by=a] to assign to column name(s) held in variable myVar. See ?':=' for other examples. As warned in 2014, this is now a warning." +msgstr "" + +msgid "with=FALSE ignored, it isn't needed when using :=. See ?':=' for examples." +msgstr "" + +msgid "column(s) not removed because not found:" +msgstr "" + +msgid "column(s) not found:" +msgstr "" + +msgid "of j is" +msgstr "" + +msgid "which is outside the column number range [1,ncol=" +msgstr "" + +msgid "]" +msgstr "" + +msgid "j mixes positives and negatives" +msgstr "" + +msgid "When with=FALSE, j-argument should be of type logical/character/integer indicating the columns to select." +msgstr "" + +msgid "by=c(...), key(...) or names(...) must evaluate to 'character'" +msgstr "" + +msgid "'by' is a character vector length" +msgstr "" + +msgid "but one or more items include a comma. Either pass a vector of column names (which can contain spaces, but no commas), or pass a vector length 1 containing comma separated column names. See ?data.table for other possibilities." +msgstr "" + +msgid "by index '%s' but that index has 0 length. Ignoring." +msgstr "" + +msgid "Internal error: irows isn't integer" +msgstr "" + +msgid "i clause present and columns used in by detected, only these subset:" +msgstr "" + +msgid "i clause present but columns used in by not detected. Having to subset all columns before evaluating 'by': '" +msgstr "" + +msgid "'by' appears to evaluate to column names but isn't c() or key(). Use by=list(...) if you can. Otherwise, by=eval" +msgstr "" + +msgid "should work. This is for efficiency so data.table can detect which columns are needed." +msgstr "" + +msgid "'by' or 'keyby' must evaluate to a vector or a list of vectors (where 'list' includes data.table and data.frame which are lists, too)" +msgstr "" + +msgid "column or expression" +msgstr "" + +msgid "of 'by' or 'keyby' is type" +msgstr "" + +msgid ". Do not quote column names. Usage: DT[,sum(colC),by=list(colA,month(colB))]" +msgstr "" + +msgid "The items in the 'by' or 'keyby' list are length(s) (%s). Each must be length %d; the same length as there are rows in x (after subsetting if i is provided)." +msgstr "" + +msgid "by-expression '%s' is not named, and the auto-generated name '%s' clashed with variable(s) in j. Therefore assigning the entire by-expression as name." +msgstr "" + +msgid "Internal error: drop_dot passed" +msgstr "" + +msgid "items" +msgstr "" + +msgid "Item %d of the .() or list() passed to j is missing" +msgstr "" + +msgid "Different branches of j expression produced different auto-named columns:" +msgstr "" + +msgid "%s!=%s" +msgstr "" + +msgid "; using the most \"last\" names" +msgstr "" + +msgid "When .SDcols is a function, it is applied to each column; the output of this function must be a non-missing boolean scalar signalling inclusion/exclusion of the column. However, these conditions were not met for:" +msgstr "" + +msgid ".SDcols missing at the following indices:" +msgstr "" + +msgid ".SDcols is numeric but has both +ve and -ve indices" +msgstr "" + +msgid ".SDcols is numeric but out of bounds [1," +msgstr "" + +msgid "] at:" +msgstr "" + +msgid ".SDcols should be column numbers or names" +msgstr "" + +msgid "Some items of .SDcols are not column names:" +msgstr "" + +msgid "'(m)get' found in j. ansvars being set to all columns. Use .SDcols or a single j=eval(macro) instead. Both will detect the columns used which is important for efficiency.\nOld ansvars: %s" +msgstr "" + +msgid "New ansvars: %s" +msgstr "" + +msgid "This j doesn't use .SD but .SDcols has been supplied. Ignoring .SDcols. See ?data.table." +msgstr "" + +msgid "Detected that j uses these columns:" +msgstr "" + +msgid "'(m)get' found in j. ansvars being set to all columns. Use .SDcols or a single j=eval(macro) instead. Both will detect the columns used which is important for efficiency.\nOld:" +msgstr "" + +msgid "New:" +msgstr "" + +msgid ".SD is locked. Using := in .SD's j is reserved for possible future use; a tortuously flexible way to modify by group. Use := in j directly to modify by group by reference." +msgstr "" + +msgid "In `:=`(col1=val1, col2=val2, ...) form, all arguments must be named." +msgstr "" + +msgid "LHS of := must be a symbol, or an atomic vector (column names or positions)." +msgstr "" + +msgid "LHS of := appears to be column positions but are outside [1,ncol] range. New columns can only be added by name." +msgstr "" + +msgid "LHS of := isn't column names ('character') or positions ('integer' or 'numeric')" +msgstr "" + +msgid "No rows match i. No new columns to add so not evaluating RHS of :=\nAssigning to 0 row subset of %d rows" +msgstr "" + +msgid "Invalid .internal.selfref detected and fixed by taking a (shallow) copy of the data.table so that := can add this new column by reference. At an earlier point, this data.table has been copied by R (or was created manually using structure() or similar). Avoid names<- and attr<- which in R currently (and oddly) may copy the whole data.table. Use set* syntax instead to avoid copying: ?set, ?setnames and ?setattr. If this message doesn't help, please report your use case to the data.table issue tracker so the root cause can be fixed or this message improved." +msgstr "" + +msgid "Growing vector of column pointers from truelength %d to %d. A shallow copy has been taken, see ?setalloccol. Only a potential issue if two variables point to the same data (we can't yet detect that well) and if not you can safely ignore this. To avoid this message you could setalloccol() first, deep copy first using copy(), wrap with suppressWarnings() or increase the 'datatable.alloccol' option." +msgstr "" + +msgid "Note that the shallow copy will assign to the environment from which := was called. That means for example that if := was called within a function, the original table may be unaffected." +msgstr "" + +msgid "Cannot assign to an under-allocated recursively indexed list -- L[[i]][,:=] syntax is only valid when i is length 1, but it's length" +msgstr "" + +msgid "Internal error -- item '" +msgstr "" + +msgid "' not found in names of list" +msgstr "" + +msgid "Internal error -- column(s) not found:" +msgstr "" + +msgid "strptime() usage detected and wrapped with as.POSIXct(). This is to minimize the chance of assigning POSIXlt columns, which use 40+ bytes to store one date (versus 8 for POSIXct). Use as.POSIXct() (which will call strptime() as needed internally) to avoid this warning." +msgstr "" + +msgid "' is not found in calling scope. Looking in calling scope because this symbol was prefixed with .. in the j= parameter." +msgstr "" + +msgid "Internal error: xcolAns does not pass checks:" +msgstr "" + +msgid "Internal error: irows is NULL when making join result at R level. Should no longer happen now we use CsubsetDT earlier." +msgstr "" + +msgid "j (the 2nd argument inside [...]) is a single symbol but column name '" +msgstr "" + +msgid "' is not found. Perhaps you intended DT[, .." +msgstr "" + +msgid "]. This difference to data.frame is deliberate and explained in FAQ 1.1." +msgstr "" + +msgid "Internal error: j has created a data.table result containing a NULL column" +msgstr "" + +msgid "The column '.N' can't be grouped because it conflicts with the special .N variable. Try setnames(DT,'.N','N') first." +msgstr "" + +msgid "The column '.I' can't be grouped because it conflicts with the special .I variable. Try setnames(DT,'.I','I') first." +msgstr "" + +msgid "Note: forcing units=\"secs\" on implicit difftime by group; call difftime explicitly to choose custom units" +msgstr "" + +msgid "logical error. i is not data.table, but mult='all' and 'by'=.EACHI" +msgstr "" + +msgid "Internal error: by= is missing" +msgstr "" + +msgid "Finding groups using forderv ..." +msgstr "" + +msgid "Finding group sizes from the positions (can be avoided to save RAM) ..." +msgstr "" + +msgid "Getting back original order ..." +msgstr "" + +msgid "Finding groups using uniqlist on key ..." +msgstr "" + +msgid "Internal error: byindex not the index name" +msgstr "" + +msgid "Finding groups using uniqlist on index '%s' ..." +msgstr "" + +msgid "Internal error: byindex not found" +msgstr "" + +msgid "lapply optimization changed j from '%s' to '%s'" +msgstr "" + +msgid "lapply optimization is on, j unchanged as '%s'" +msgstr "" + +msgid "GForce optimized j to '" +msgstr "" + +msgid "GForce is on, left j unchanged" +msgstr "" + +msgid "Unable to optimize call to mean() and could be very slow. You must name 'na.rm' like that otherwise if you do mean(x,TRUE) the TRUE is taken to mean 'trim' which is the 2nd argument of mean. 'trim' is not yet optimized." +msgstr "" + +msgid "Old mean optimization changed j from '%s' to '%s'" +msgstr "" + +msgid "Old mean optimization is on, left j unchanged." +msgstr "" + +msgid "All optimizations are turned off" +msgstr "" + +msgid "Optimization is on but left j unchanged (single plain symbol): '%s'" +msgstr "" + +msgid "Internal error: length(irows)!=length(o__)" +msgstr "" + +msgid "Making each group and running j (GForce %s) ..." +msgstr "" + +msgid "setkey() after the := with keyby= ..." +msgstr "" + +msgid "The setkey() normally performed by keyby= has been skipped (as if by= was used) because := is being used together with keyby= but the keyby= contains some expressions. To avoid this warning, use by= instead, or provide existing column names to keyby=." +msgstr "" + +msgid "Internal error: jvnames is length" +msgstr "" + +msgid "but ans is" +msgstr "" + +msgid "and bynames is" +msgstr "" + +msgid "setkey() afterwards for keyby=.EACHI ..." +msgstr "" + +msgid "rownames and rownames.value cannot both be used at the same time" +msgstr "" + +msgid "length(rownames)==" +msgstr "" + +msgid "but nrow(DT)==" +msgstr "" + +msgid ". The rownames argument specifies a single column name or number. Consider rownames.value= instead." +msgstr "" + +msgid "length(rownames)==0 but should be a single column name or number, or NULL" +msgstr "" + +msgid "rownames is TRUE but key has multiple columns" +msgstr "" + +msgid "; taking first column x[,1] as rownames" +msgstr "" + +msgid "'" +msgstr "" + +msgid "' is not a column of x" +msgstr "" + +msgid "as.integer(rownames)==" +msgstr "" + +msgid "]." +msgstr "" + +msgid "length(rownames.value)==" +msgstr "" + +msgid "but should be nrow(x)==" +msgstr "" + +msgid "When i is a matrix in DT[i]<-value syntax, it doesn't make sense to provide j" +msgstr "" + +msgid "j must be an atomic vector, see ?is.atomic" +msgstr "" + +msgid "NA in j" +msgstr "" + +msgid "j must be vector of column name or positions" +msgstr "" + +msgid "Attempt to assign to column position greater than ncol(x). Create the column by name, instead. This logic intends to catch (most likely) user errors." +msgstr "" + +msgid "data.table inherits from data.frame (from v1.5), but this data.table does not. Has it been created manually (e.g. by using 'structure' rather than 'data.table') or saved to disk using a prior version of data.table?" +msgstr "" + +msgid "attempting to assign invalid object to dimnames of a data.table" +msgstr "" + +msgid "data.tables do not have rownames" +msgstr "" + +msgid "Can't assign" +msgstr "" + +msgid "colnames to a" +msgstr "" + +msgid "-column data.table" +msgstr "" + +msgid "'subset' must evaluate to logical" +msgstr "" + +msgid "Argument 'invert' must be logical TRUE/FALSE" +msgstr "" + +msgid "x argument must be a data.table" +msgstr "" + +msgid "group length is 0 but data nrow > 0" +msgstr "" + +msgid "passing 'f' argument together with 'by' is not allowed, use 'by' when split by column in data.table and 'f' when split by external factor" +msgstr "" + +msgid "Either 'by' or 'f' argument must be supplied" +msgstr "" + +msgid "Column '.ll.tech.split' is reserved for split.data.table processing" +msgstr "" + +msgid "Column '.nm.tech.split' is reserved for split.data.table processing" +msgstr "" + +msgid "Argument 'by' must refer to column names in x" +msgstr "" + +msgid "Argument 'by' must refer only to atomic-type columns, but the following columns are non-atomic:" +msgstr "" + +msgid "Processing split.data.table with:" +msgstr "" + +msgid "x is not a data.table. Shallow copy is a copy of the vector of column pointers (only), so is only meaningful for data.table" +msgstr "" + +msgid "setalloccol attempting to modify `*tmp*`" +msgstr "" + +msgid "Input is a length=1 logical that points to the same address as R's global value. Therefore the attribute has not been set by reference, rather on a copy. You will need to assign the result back to a variable. See issue #1281." +msgstr "" + +msgid "x is not a data.table or data.frame" +msgstr "" + +msgid "x has" +msgstr "" + +msgid "columns but its names are length" +msgstr "" + +msgid "Passed a vector of type '" +msgstr "" + +msgid "'. Needs to be type 'character'." +msgstr "" + +msgid "names to a" +msgstr "" + +msgid "column data.table" +msgstr "" + +msgid "'new' is not a character vector or a function" +msgstr "" + +msgid "NA in 'new' at positions" +msgstr "" + +msgid "Some duplicates exist in 'old':" +msgstr "" + +msgid "'old' is type" +msgstr "" + +msgid "but should be integer, double or character" +msgstr "" + +msgid "'old' is length" +msgstr "" + +msgid "but 'new' is length" +msgstr "" + +msgid "NA (or out of bounds) in 'old' at positions" +msgstr "" + +msgid "of 'old' is '" +msgstr "" + +msgid "' which appears several times in column names. Just the first will be changed. There are" +msgstr "" + +msgid "other items in old that are also duplicated in column names." +msgstr "" + +msgid "Items of 'old' not found in column names:" +msgstr "" + +msgid ". Consider skip_absent=TRUE." +msgstr "" + +msgid "Internal error: length(i)!=length(new)" +msgstr "" + +msgid "x has some duplicated column name(s):" +msgstr "" + +msgid ". Please remove or rename the duplicate(s) and try again." +msgstr "" + +msgid "Input is" +msgstr "" + +msgid "but should be a plain list of items to be stacked" +msgstr "" + +msgid "idcol must be a logical or character vector of length 1. If logical TRUE the id column will named '.id'." +msgstr "" + +msgid "use.names=NA invalid" +msgstr "" + +msgid "use.names='check' cannot be used explicitly because the value 'check' is new in v1.12.2 and subject to change. It is just meant to convey default behavior. See ?rbindlist." +msgstr "" + +msgid "Check that is.data.table(DT) == TRUE. Otherwise, := and `:=`(...) are defined for use in j, once only and in particular ways. See help(\":=\")." +msgstr "" + +msgid "setDF only accepts data.table, data.frame or list of equal length as input" +msgstr "" + +msgid "rownames contains duplicates" +msgstr "" + +msgid "rownames incorrect length; expected" +msgstr "" + +msgid "names, got" +msgstr "" + +msgid "All elements in argument 'x' to 'setDF' must be of same length" +msgstr "" + +msgid "Cannot find symbol" +msgstr "" + +msgid "Cannot convert '" +msgstr "" + +msgid "' to data.table by reference because binding is locked. It is very likely that '" +msgstr "" + +msgid "' resides within a package (or an environment) that is locked to prevent modifying its variable bindings. Try copying the object to your current environment, ex: var <- copy(var) and then using setDT again." +msgstr "" + +msgid "Some columns are a multi-column type (such as a matrix column):" +msgstr "" + +msgid ". setDT will retain these columns as-is but subsequent operations like grouping and joining may fail. Please consider as.data.table() instead which will create a new column for each embedded column." +msgstr "" + +msgid "Column" +msgstr "" + +msgid "is of POSIXlt type. Please convert it to POSIXct using as.POSIXct and run setDT again. We do not recommend use of POSIXlt at all because it uses 40 bytes to store one date." +msgstr "" + +msgid "All elements in argument 'x' to 'setDT' must be of same length, but the profile of input lengths (length:frequency) is:" +msgstr "" + +msgid "%s:%d" +msgstr "" + +msgid "The first entry with fewer than" +msgstr "" + +msgid "entries is" +msgstr "" + +msgid "Argument 'x' to 'setDT' should be a 'list', 'data.frame' or 'data.table'" +msgstr "" + +msgid "Item '" +msgstr "" + +msgid "' not found in names of input list" +msgstr "" + +msgid "'prefix' must be NULL or a character vector of length 1." +msgstr "" + +msgid "x is a single vector, non-NULL 'cols' doesn't make sense." +msgstr "" + +msgid "x is a list, 'cols' cannot be 0-length." +msgstr "" + +msgid "RHS of %s is length %d which is not 1 or nrow (%d). For robustness, no recycling is allowed (other than of length 1 RHS). Consider %%in%% instead." +msgstr "" + +msgid "Internal error in .isFastSubsettable. Please report to data.table developers" +msgstr "" + +msgid "Subsetting optimization disabled because the cross-product of RHS values exceeds 1e4, causing memory problems." +msgstr "" + +msgid "Optimized subsetting with key '" +msgstr "" + +msgid "Optimized subsetting with index '" +msgstr "" + +msgid "Creating new index '" +msgstr "" + +msgid "Creating index %s done in ..." +msgstr "" + +msgid "'on' argument should be a named atomic vector of column names indicating which columns in 'i' should be joined with which columns in 'x'." +msgstr "" + +msgid "Found more than one operator in one 'on' statement:" +msgstr "" + +msgid ". Please specify a single operator." +msgstr "" + +msgid "'on' contains no column name:" +msgstr "" + +msgid ". Each 'on' clause must contain one or two column names." +msgstr "" + +msgid "'on' contains more than 2 column names:" +msgstr "" + +msgid "Invalid operators" +msgstr "" + +msgid ". Only allowed operators are" +msgstr "" + +msgid "." +msgstr "" + +msgid "There is no package %s in provided repository." +msgstr "" + +msgid "Git revision is not available. Most likely data.table was installed from CRAN or local archive.\nGit revision is available when installing from our repositories 'https://Rdatatable.gitlab.io/data.table' and 'https://Rdatatable.github.io/data.table'." +msgstr "" + +msgid "'fromLast' must be TRUE or FALSE" +msgstr "" + +msgid "x must be an atomic vector or data.frames/data.tables" +msgstr "" + +msgid "Using '" +msgstr "" + +msgid "' as value column. Use 'value.var' to override" +msgstr "" + +msgid "The dcast generic in data.table has been passed a" +msgstr "" + +msgid ", but data.table::dcast currently only has a method for data.tables. Please confirm your input is a data.table, with setDT(" +msgstr "" + +msgid ") or as.data.table(" +msgstr "" + +msgid "). If you intend to use a reshape2::dcast, try installing that package first, but do note that reshape2 is deprecated and you should be migrating your code away from using it." +msgstr "" + +msgid "and will attempt to redirect to the reshape2::dcast; please note that reshape2 is deprecated, and this redirection is now deprecated as well. Please do this redirection yourself like reshape2::dcast(" +msgstr "" + +msgid "). In the next version, this warning will become an error." +msgstr "" + +msgid "Invalid formula. Cast formula should be of the form LHS ~ RHS, for e.g., a + b ~ c." +msgstr "" + +msgid "data.table to cast must have unique column names" +msgstr "" + +msgid "value.var values [" +msgstr "" + +msgid "] are not found in 'data'." +msgstr "" + +msgid "When 'fun.aggregate' and 'value.var' are both lists, 'value.var' must be either of length =1 or =length(fun.aggregate)." +msgstr "" + +msgid "'data' must be a data.table." +msgstr "" + +msgid "'drop' must be logical TRUE/FALSE" +msgstr "" + +msgid "Column [" +msgstr "" + +msgid "] not found or of unknown type." +msgstr "" + +msgid "Columns specified in formula can not be of type list" +msgstr "" + +msgid "Can not cast an empty data.table" +msgstr "" + +msgid "Aggregate function missing, defaulting to 'length'" +msgstr "" + +msgid "Internal error -- empty rhsnames in dcast; please report" +msgstr "" + +msgid "The melt generic in data.table has been passed a" +msgstr "" + +msgid ", but data.table::melt currently only has a method for data.tables. Please confirm your input is a data.table, with setDT(" +msgstr "" + +msgid "). If you intend to use a method from reshape2, try installing that package first, but do note that reshape2 is deprecated and you should be migrating your code away from using it." +msgstr "" + +msgid "and will attempt to redirect to the relevant reshape2 method; please note that reshape2 is deprecated, and this redirection is now deprecated as well. To continue using melt methods from reshape2 while both libraries are attached, e.g. melt.list, you can prepend the namespace like reshape2::melt(" +msgstr "" + +msgid "Input patterns must be of type character." +msgstr "" + +msgid "'data' must be a data.table" +msgstr "" + +msgid "'value.name' provided in both 'measure.vars'" +msgstr "" + +msgid "and 'value.name argument'; value provided in" +msgstr "" + +msgid "'measure.vars' is given precedence." +msgstr "" + +msgid "Please provide a name to each element of 'measure.vars'." +msgstr "" + +msgid "Duplicate column names found in molten data.table. Setting unique names using 'make.names'" +msgstr "" + +msgid "y and x must both be data.tables. Use `setDT()` to convert list/data.frames to data.tables by reference or as.data.table() to convert to data.tables by copying." +msgstr "" + +msgid "maxgap must be a non-negative integer value of length 1" +msgstr "" + +msgid "minoverlap must be a positive integer value of length 1" +msgstr "" + +msgid "which must be a logical vector of length 1. Either TRUE/FALSE" +msgstr "" + +msgid "nomatch must either be NA or NULL" +msgstr "" + +msgid "maxgap and minoverlap arguments are not yet implemented." +msgstr "" + +msgid "'y' must be keyed (i.e., sorted, and, marked as sorted). Call setkey(y, ...) first, see ?setkey. Also check the examples in ?foverlaps." +msgstr "" + +msgid "'by.x' and 'by.y' should contain at least two column names (or numbers) each - corresponding to 'start' and 'end' points of intervals. Please see ?foverlaps and examples for more info." +msgstr "" + +msgid "Invalid numeric value for 'by.x'; it should be a vector with values 1 <= by.x <= length(x)" +msgstr "" + +msgid "Invalid numeric value for 'by.y'; it should be a vector with values 1 <= by.y <= length(y)" +msgstr "" + +msgid "A non-empty vector of column names or numbers is required for by.x" +msgstr "" + +msgid "A non-empty vector of column names or numbers is required for by.y" +msgstr "" + +msgid "The first" +msgstr "" + +msgid "columns of y's key must be identical to the columns specified in by.y." +msgstr "" + +msgid "Elements listed in 'by.x' must be valid names in data.table 'x'" +msgstr "" + +msgid "Duplicate columns are not allowed in overlap joins. This may change in the future." +msgstr "" + +msgid "length(by.x) != length(by.y). Columns specified in by.x should correspond to columns specified in by.y and should be of same lengths." +msgstr "" + +msgid "y has some duplicated column name(s):" +msgstr "" + +msgid "The last two columns in by.x should correspond to the 'start' and 'end' intervals in data.table 'x' and must be integer/numeric type." +msgstr "" + +msgid "NA values in data.table 'x' start column: '" +msgstr "" + +msgid "'. All rows with NA values in the range columns must be removed for foverlaps() to work." +msgstr "" + +msgid "NA values in data.table 'x' end column: '" +msgstr "" + +msgid "All entries in column" +msgstr "" + +msgid "should be <= corresponding entries in column" +msgstr "" + +msgid "in data.table 'x'." +msgstr "" + +msgid "The last two columns in by.y should correspond to the 'start' and 'end' intervals in data.table 'y' and must be integer/numeric type." +msgstr "" + +msgid "NA values in data.table 'y' start column: '" +msgstr "" + +msgid "NA values in data.table 'y' end column: '" +msgstr "" + +msgid "in data.table 'y'." +msgstr "" + +msgid "Some interval cols are of type POSIXct while others are not. Please ensure all interval cols are (or are not) of POSIXct type" +msgstr "" + +msgid "POSIXct interval cols have mixed timezones. Overlaps are performed on the internal numerical representation of POSIXct objects (always in UTC epoch time), therefore printed values may give the impression that values don't overlap but their internal representations do Please ensure that POSIXct type interval cols have identical 'tzone' attributes to avoid confusion." +msgstr "" + +msgid "unique() + setkey() operations done in ..." +msgstr "" + +msgid "binary search(es) done in ..." +msgstr "" + +msgid "Not yet implemented" +msgstr "" + +msgid "maxgap > minoverlap. maxgap will have no effect here." +msgstr "" + +msgid "length(na.last) = 0" +msgstr "" + +msgid "length(na.last) > 1, only the first element will be used" +msgstr "" + +msgid "x is a single vector, non-NULL 'cols' doesn't make sense" +msgstr "" + +msgid "x is a list, 'cols' can not be 0-length" +msgstr "" + +msgid "Used more than one of the arguments input=, file=, text= and cmd=." +msgstr "" + +msgid "Argument 'encoding' must be 'unknown', 'UTF-8' or 'Latin-1'." +msgstr "" + +msgid "'text=' is type" +msgstr "" + +msgid "but must be character." +msgstr "" + +msgid "input= must be a single character string containing a file name, a system command containing at least one space, a URL starting 'http[s]://', 'ftp[s]://' or 'file://', or, the input data itself containing at least one \\n or \\r" +msgstr "" + +msgid "input= contains no \\n or \\r, but starts with a space. Please remove the leading space, or use text=, file= or cmd=" +msgstr "" + +msgid "Input URL requires https:// connection for which fread() requires 'curl' package which cannot be found. Please install 'curl' using 'install.packages('curl')'." +msgstr "" + +msgid "Taking input= as a system command ('" +msgstr "" + +msgid "') and a variable has been used in the expression passed to `input=`. Please use fread(cmd=...). There is a security concern if you are creating an app, and the app could have a malicious user, and the app is not running in a secure environment; e.g. the app is running as root. Please read item 5 in the NEWS file for v1.11.6 for more information and for the option to suppress this message." +msgstr "" + +msgid "File '" +msgstr "" + +msgid "' does not exist or is non-readable. getwd()=='" +msgstr "" + +msgid "' is a directory. Not yet implemented." +msgstr "" + +msgid "' has size 0. Returning a NULL" +msgstr "" + +msgid "data.table" +msgstr "" + +msgid "data.frame" +msgstr "" + +msgid "To read gz and bz2 files directly, fread() requires 'R.utils' package which cannot be found. Please install 'R.utils' using 'install.packages('R.utils')'." +msgstr "" + +msgid "'autostart' is now deprecated and ignored. Consider skip='string' or skip=n" +msgstr "" + +msgid "colClasses is type 'logical' which is ok if all NA but it has some TRUE or FALSE values in it which is not allowed. Please consider the drop= or select= argument instead. See ?fread." +msgstr "" + +msgid "colClasses is not type list or character vector" +msgstr "" + +msgid "colClasses=\"NULL\" (quoted) is interpreted as colClasses=NULL (the default) as opposed to dropping every column." +msgstr "" + +msgid "strip.white==TRUE (default) and \"\" is present in na.strings, so any number of spaces in string columns will already be read as ." +msgstr "" + +msgid "Since strip.white=TRUE (default), use na.strings=\"\" to specify that any number of spaces in a string column should be read as ." +msgstr "" + +msgid "But strip.white=FALSE. Use strip.white=TRUE (default) together with na.strings=\"\" to turn any number of spaces in string columns into " +msgstr "" + +msgid "'data.table' relies on the package 'yaml' to parse the file header; please add this to your library with install.packages('yaml') and try again." +msgstr "" + +msgid "Combining a search string as 'skip' and reading a YAML header may not work as expected -- currently," +msgstr "" + +msgid "reading will proceed to search for 'skip' from the beginning of the file, NOT from the end of" +msgstr "" + +msgid "the metadata; please file an issue on GitHub if you'd like to see more intuitive behavior supported." +msgstr "" + +msgid "Encountered <" +msgstr "" + +msgid "..." +msgstr "" + +msgid "> at the first" +msgstr "" + +msgid "unskipped line (" +msgstr "" + +msgid "), which does not constitute the start to a valid YAML header" +msgstr "" + +msgid "(expecting something matching regex \"" +msgstr "" + +msgid "\"); please check your input and try again." +msgstr "" + +msgid "Reached the end of the file before finding a completion to the YAML header. A valid YAML header is bookended by lines matching" +msgstr "" + +msgid "the regex \"" +msgstr "" + +msgid "\". Please double check the input file is a valid csvy." +msgstr "" + +msgid "Processed %d lines of YAML metadata with the following top-level fields: %s" +msgstr "" + +msgid "User-supplied 'header' will override that found in metadata." +msgstr "" + +msgid "User-supplied column names in 'col.names' will override those found in YAML metadata." +msgstr "" + +msgid "colClasses dictated by user input and those read from YAML header are in conflict (specifically, for column" +msgstr "" + +msgid "s" +msgstr "" + +msgid "[" +msgstr "" + +msgid "]); the proceeding assumes the user input was" +msgstr "" + +msgid "an intentional override and will ignore the types implied by the YAML header; please exclude" +msgstr "" + +msgid "these columns" +msgstr "" + +msgid "this column from colClasses if this was unintentional." +msgstr "" + +msgid "User-supplied 'sep' will override that found in metadata." +msgstr "" + +msgid "User-supplied 'quote' will override that found in metadata." +msgstr "" + +msgid "User-supplied 'dec' will override that found in metadata." +msgstr "" + +msgid "User-supplied 'na.strings' will override that found in metadata." +msgstr "" + +msgid "Column '" +msgstr "" + +msgid "' was requested to be '" +msgstr "" + +msgid "' but fread encountered the following" +msgstr "" + +msgid "error" +msgstr "" + +msgid "warning" +msgstr "" + +msgid ":" +msgstr "" + +msgid "so the column has been left as type '" +msgstr "" + +msgid "stringsAsFactors=%s converted %d column(s): %s" +msgstr "" + +msgid "key argument of data.table() must be a character vector naming columns (NB: col.names are applied before this)" +msgstr "" + +msgid "index argument of data.table() must be a character vector naming columns (NB: col.names are applied before this)" +msgstr "" + +msgid "dateTimeAs must be a single string" +msgstr "" + +msgid "dateTimeAs must be 'ISO','squash','epoch' or 'write.csv'" +msgstr "" + +msgid "logicalAsInt has been renamed logical01. Use logical01 only, not both." +msgstr "" + +msgid "x being coerced from class: matrix to data.table" +msgstr "" + +msgid "Appending to existing file so setting bom=FALSE and yaml=FALSE" +msgstr "" + +msgid "Input has no columns; doing nothing." +msgstr "" + +msgid "If you intended to overwrite the file at" +msgstr "" + +msgid "with an empty one, please use file.remove first." +msgstr "" + +msgid "Input has no columns; creating an empty file at '" +msgstr "" + +msgid "' and exiting." +msgstr "" + +msgid "'data.table' relies on the package 'yaml' to write the file header; please add this to your library with install.packages('yaml') and try again." +msgstr "" + +msgid "Argument 'x' must be a data.table object" +msgstr "" + +msgid "Argument 'by' must be a character vector of column names used in grouping." +msgstr "" + +msgid "Argument 'id' must be a logical scalar." +msgstr "" + +msgid "Argument 'x' is a 0-column data.table; no measure to apply grouping over." +msgstr "" + +msgid "Input data.table must not contain duplicate column names." +msgstr "" + +msgid "Argument 'by' must have unique column names for grouping." +msgstr "" + +msgid "Argument 'sets' must be a list of character vectors." +msgstr "" + +msgid "All columns used in 'sets' argument must be in 'by' too. Columns used in 'sets' but not present in 'by':" +msgstr "" + +msgid "When using `id=TRUE` the 'x' data.table must not have a column named 'grouping'." +msgstr "" + +msgid "Character vectors in 'sets' list must not have duplicated column names within a single grouping set." +msgstr "" + +msgid "'sets' contains a duplicate (i.e., equivalent up to sorting) element at index" +msgstr "" + +msgid "; as such, there will be duplicate rows in the output -- note that grouping by A,B and B,A will produce the same aggregations. Use `sets=unique(lapply(sets, sort))` to eliminate duplicates." +msgstr "" + +msgid "Expression passed to grouping sets function must not update by reference. Use ':=' on results of your grouping function." +msgstr "" + +msgid "When using `id=TRUE` the 'j' expression must not evaluate to a column named 'grouping'." +msgstr "" + +msgid "There exists duplicated column names in the results, ensure the column passed/evaluated in `j` and those in `by` are not overlapping." +msgstr "" + +msgid "Using integer64 class columns require to have 'bit64' package installed." +msgstr "" + +msgid "%s: using %s: %s" +msgstr "" + +msgid "'xts' class passed to %s function but 'xts' is not available, you should have 'xts' installed already" +msgstr "" + +msgid "Argument 'sort' should be logical TRUE/FALSE" +msgstr "" + +msgid "Argument 'no.dups' should be logical TRUE/FALSE" +msgstr "" + +msgid "You are trying to join data.tables where" +msgstr "" + +msgid "'x' and 'y' arguments are" +msgstr "" + +msgid "'x' argument is" +msgstr "" + +msgid "'y' argument is" +msgstr "" + +msgid "0 columns data.table." +msgstr "" + +msgid "`by.x` and `by.y` must be of same length." +msgstr "" + +msgid "Supplied both `by` and `by.x/by.y`. `by` argument will be ignored." +msgstr "" + +msgid "A non-empty vector of column names is required for `by.x` and `by.y`." +msgstr "" + +msgid "Elements listed in `by.x` must be valid column names in x." +msgstr "" + +msgid "Elements listed in `by.y` must be valid column names in y." +msgstr "" + +msgid "A non-empty vector of column names for `by` is required." +msgstr "" + +msgid "Elements listed in `by` must be valid column names in x and y" +msgstr "" + +msgid "column names" +msgstr "" + +msgid "are duplicated in the result" +msgstr "" + +msgid "IN DEVELOPMENT built" +msgstr "" + +msgid "using" +msgstr "" + +msgid "threads (see ?getDTthreads). Latest news: r-datatable.com" +msgstr "" + +msgid "TRANSLATION CHECK" +msgstr "" + +msgid "**********\nRunning data.table in English; package support is available in English only. When searching for online help, be sure to also check for the English error message. This can be obtained by looking at the po/R-.po and po/.po files in the package source, where the native language and English error messages can be found side-by-side\n**********" +msgstr "" + +msgid "**********\nThis development version of data.table was built more than 4 weeks ago. Please update: data.table::update.dev.pkg()\n**********" +msgstr "" + +msgid "**********" +msgstr "" + +msgid "This installation of data.table has not detected OpenMP support. It should still work but in single-threaded mode." +msgstr "" + +msgid "sysname" +msgstr "" + +msgid "Darwin" +msgstr "" + +msgid "This is a Mac. Please read https://mac.r-project.org/openmp/. Please engage with Apple and ask them for support. Check r-datatable.com for updates, and our Mac instructions here: https://github.com/Rdatatable/data.table/wiki/Installation. After several years of many reports of installation problems on Mac, it's time to gingerly point out that there have been no similar problems on Windows or Linux." +msgstr "" + +msgid "This is" +msgstr "" + +msgid ". This warning should not normally occur on Windows or Linux where OpenMP is turned on by data.table's configure script by passing -fopenmp to the compiler. If you see this warning on Windows or Linux, please file a GitHub issue." +msgstr "" + +msgid "The option 'datatable.nomatch' is being used and is not set to the default NA. This option is still honored for now but will be deprecated in future. Please see NEWS for 1.12.4 for detailed information and motivation. To specify inner join, please specify `nomatch=NULL` explicitly in your calls rather than changing the default using this option." +msgstr "" + +msgid "The datatable.%s version (%s) does not match the package (%s). Please close all R sessions to release the old %s and reinstall data.table in a fresh R session. The root cause is that R's package installer can in some unconfirmed circumstances leave a package in a state that is apparently functional but where new R code is calling old C code silently: https://bugs.r-project.org/bugzilla/show_bug.cgi?id=17478. Once a package is in this mismatch state it may produce wrong results silently until you next upgrade the package. Please help by adding precise circumstances to 17478 to move the status to confirmed. This mismatch between R and C code can happen with any package not just data.table. It is just that data.table has added this check." +msgstr "" + +msgid "This is R" +msgstr "" + +msgid "but data.table has been installed using R" +msgstr "" + +msgid ". The major version must match. Please reinstall data.table." +msgstr "" + +msgid "Option 'datatable.old.bywithoutby' has been removed as warned for 2 years. It is now ignored. Please use by=.EACHI instead and stop using this option." +msgstr "" + +msgid "Option 'datatable.old.unique.by.key' has been removed as warned for 4 years. It is now ignored. Please use by=key(DT) instead and stop using this option." +msgstr "" + +msgid "Unexpected base R behaviour: list(x) has copied x" +msgstr "" + +msgid "Unexpected base R behaviour: names<- has copied column contents" +msgstr "" + +msgid "Unexpected base R behaviour: DF[2,2]<- did not copy column 2 which was assigned to" +msgstr "" + +msgid "Unexpected base R behaviour: DF[2,2]<- copied the first column which was not assigned to, too" +msgstr "" + +msgid "Unexpected base R behaviour: DF[2,2]<- has not copied address(DF)" +msgstr "" + +msgid "Reminder to data.table developers: don't use getRversion() internally. Add a behaviour test to .onLoad instead." +msgstr "" + +msgid "Provide either threads= or percent= but not both" +msgstr "" + +msgid "percent= is provided but is length" +msgstr "" + +msgid "percent==" +msgstr "" + +msgid "but should be a number between 2 and 100" +msgstr "" + +msgid "Valid options for col.names are 'auto', 'top', and 'none'" +msgstr "" + +msgid "Column classes will be suppressed when col.names is 'none'" +msgstr "" + +msgid "Key: <%s>" +msgstr "" + +msgid "Null data.%s (0 rows and 0 cols)" +msgstr "" + +msgid "Empty data.%s (%d rows and %d cols)" +msgstr "" + +msgid "Internal structure doesn't seem to be a list. Possibly corrupt data.table." +msgstr "" + +msgid "x may no longer be the character name of the data.table. The possibility was undocumented and has been removed." +msgstr "" + +msgid "key(x)<-value is deprecated and not supported. Please change to use setkey() with perhaps copy(). Has been warning since 2012 and will be an error in future." +msgstr "" + +msgid "x is not a data.table" +msgstr "" + +msgid "cols is not a character vector. Please see further information in ?setkey." +msgstr "" + +msgid "Setting a physical key on .SD is reserved for possible future use; to modify the original data's order by group. Try setindex() instead. Or, set*(copy(.SD)) as a (slow) last resort." +msgstr "" + +msgid "cols is a character vector of zero length. Removed the key, but use NULL instead, or wrap with suppressWarnings() to avoid this warning." +msgstr "" + +msgid "cols is the empty string. Use NULL to remove the key." +msgstr "" + +msgid "cols contains some blanks." +msgstr "" + +msgid "some columns are not in the data.table:" +msgstr "" + +msgid "x contains a column called '.xi'. Conflicts with internal use by data.table." +msgstr "" + +msgid "' is type '" +msgstr "" + +msgid "' which is not supported as a key column type, currently." +msgstr "" + +msgid "Internal error. 'cols' should be character at this point in setkey; please report." +msgstr "" + +msgid "forder took" +msgstr "" + +msgid "setkey on columns %s using existing index '%s'" +msgstr "" + +msgid "reorder took" +msgstr "" + +msgid "x is already ordered by these columns, no need to call reorder" +msgstr "" + +msgid "Internal error: index '" +msgstr "" + +msgid "' exists but is invalid" +msgstr "" + +msgid "x is vector but 'by' is supplied" +msgstr "" + +msgid "x is a single vector, non-NULL 'by' doesn't make sense" +msgstr "" + +msgid "Attempting to order a 0-column data.table or data.frame." +msgstr "" + +msgid "The first item passed to [f]order is a plain list but there are more items. It should be a data.table or data.frame." +msgstr "" + +msgid "Internal code should not be being called on type double" +msgstr "" + +msgid "Input is not a vector of type double. New parallel sort has only been done for double vectors so far. Using one thread." +msgstr "" + +msgid "New parallel sort has not been implemented for decreasing=TRUE so far. Using one thread." +msgstr "" + +msgid "New parallel sort has not been implemented for vectors containing NA values so far. Using one thread." +msgstr "" + +msgid "x must be a data.frame or data.table" +msgstr "" + +msgid "na.last must be logical TRUE/FALSE" +msgstr "" + +msgid "cols is not a character vector. Please see further information in ?setorder." +msgstr "" + +msgid "cols is a character vector of zero length. Use NULL instead, or wrap with suppressWarnings() to avoid this warning." +msgstr "" + +msgid "' which is not supported for ordering currently." +msgstr "" + +msgid "'sorted' is TRUE but element" +msgstr "" + +msgid "is non-atomic, which can't be sorted; try setting sorted = FALSE" +msgstr "" + +msgid "Cross product of elements provided to CJ() would result in %.0f rows which exceeds .Machine$integer.max == %d" +msgstr "" + +msgid "x and y must both be data.tables" +msgstr "" + +msgid "length(by.x) != length(by.y)" +msgstr "" + +msgid "When x's column ('%s') is character, the corresponding column in y ('%s') should be factor or character, but found incompatible type '%s'." +msgstr "" + +msgid "When x's column ('%s') is factor, the corresponding column in y ('%s') should be character or factor, but found incompatible type '%s'." +msgstr "" + +msgid "When x's column ('%s') is integer or numeric, the corresponding column in y ('%s') can not be character or logical types, but found incompatible type '%s'." +msgstr "" + +msgid "argument 'all' should be logical of length one" +msgstr "" + +msgid "x and y must have the same column names" +msgstr "" + +msgid "x and y must have the same column order" +msgstr "" + +msgid "unsupported column type" +msgstr "" + +msgid "found in x or y:" +msgstr "" + +msgid "of x is '" +msgstr "" + +msgid "' but the corresponding item of y is '" +msgstr "" + +msgid "None of the datasets should contain a column named '.seqn'" +msgstr "" + +msgid "Internal error: ncol(current)==ncol(target) was checked above" +msgstr "" + +msgid "None of the datasets to compare should contain a column named '.seqn'" +msgstr "" + +msgid "Datasets to compare with 'ignore.row.order' must not have unsupported column types:" +msgstr "" + +msgid "Argument 'tolerance' was forced to lowest accepted value `sqrt(.Machine$double.eps)` from provided" +msgstr "" + +msgid "Duplicate rows in datasets, numeric columns and ignore.row.order cannot be used with non 0 tolerance argument" +msgstr "" + +msgid "Factor columns and ignore.row.order cannot be used with non 0 tolerance argument" +msgstr "" + +msgid "Internal error: factor type mismatch should have been caught earlier" +msgstr "" + +msgid "argument 'fill' ignored, only make sense for type='const'" +msgstr "" + +msgid "No objects of class data.table exist in %s" +msgstr "" + +msgid "order.col='" +msgstr "" + +msgid "' not a column name of info" +msgstr "" + +msgid "Total:" +msgstr "" + +msgid "data.table package is loaded. Unload or start a fresh R session." +msgstr "" + +msgid "script must end with '.Rraw'. If a file ending '.Rraw.bz2' exists, that will be found and used." +msgstr "" + +msgid "Neither %s nor %s exist in %s" +msgstr "" + +msgid "test.data.table() running:" +msgstr "" + +msgid "**** This R session's language is not English. Each test will still check that the correct number of errors and/or\n**** warnings are produced. However, to test the text of each error/warning too, please restart R with LANGUAGE=en" +msgstr "" + +msgid "Failed after test" +msgstr "" + +msgid "before the next test() call in" +msgstr "" + +msgid "Timings count mismatch:" +msgstr "" + +msgid "vs" +msgstr "" + +msgid "10 longest running tests took" +msgstr "" + +msgid "All %d tests in %s completed ok in %s" +msgstr "" + +msgid "Running test id %s" +msgstr "" + +msgid "Test" +msgstr "" + +msgid "is invalid: when error= is provided it does not make sense to pass y as well" +msgstr "" + +msgid "Test id %s is not in increasing order" +msgstr "" + +msgid "Test %s produced %d %ss but expected %d" +msgstr "" + +msgid "Test %s didn't produce the correct %s:\nExpected: %s\nObserved: %s" +msgstr "" + +msgid "Output captured before unexpected warning/error/message:" +msgstr "" + +msgid "Test %s did not produce the correct output:\nExpected: <<%s>>\nObserved <<%s>>" +msgstr "" + +msgid "Test %s produced output but should not have:\nExpected absent (case insensitive): <<%s>>\nObserved: <<%s>>" +msgstr "" + +msgid "Test %s ran without errors but selfrefok(%s) is FALSE" +msgstr "" + +msgid "Test %s ran without errors but failed check that x equals y:" +msgstr "" + +msgid "First %d of %d (type '%s'):" +msgstr "" + +msgid "Use started.at=proc.time() not Sys.time() (POSIXt and slow)" +msgstr "" + +msgid "make.names='" +msgstr "" + +msgid "' not found in names of input" +msgstr "" + +msgid "make.names=" +msgstr "" + +msgid "is out of range [1,ncol=" +msgstr "" + +msgid "'names' must be TRUE/FALSE or a character vector." +msgstr "" + +msgid "'keep' should contain integer values between" +msgstr "" + +msgid "length(names) (=" +msgstr "" + +msgid ") is not equal to length(" +msgstr "" + +msgid ") (=" +msgstr "" + +msgid ")." +msgstr "" + +msgid "l not type list" +msgstr "" + +msgid "Argument 'nan' must be length 1" +msgstr "" + +msgid "Argument 'nan' must be NA or NaN" +msgstr "" + +msgid "x not boolean" +msgstr "" + +msgid "Some columns are type 'integer64' but package bit64 is not installed. Those columns will print as strange looking floating point data. There is no need to reload the data. Simply install.packages('bit64') to obtain the integer64 print method and print the data again." +msgstr "" + +msgid "Pattern" +msgstr "" + +msgid "not found: [" +msgstr "" + +msgid "keep.rownames must be length 1" +msgstr "" + +msgid "keep.rownames must not be NA" +msgstr "" + +msgid "Input xts object should not have '%s' column because it would result in duplicate column names. Rename '%s' column in xts or use `keep.rownames` to change the index column name." +msgstr "" + +msgid "data.table must have a time based column in first position, use `setcolorder` function to change the order, or see ?timeBased for supported types" +msgstr "" + +msgid "Following columns are not numeric and will be omitted:" +msgstr "" + +msgid "Index: " +msgid_plural "Indices: " +msgstr[0] "" +msgstr[1] "" + +msgid "%d variable not shown: %s\n" +msgid_plural "%d variables not shown: %s\n" +msgstr[0] "" +msgstr[1] "" + +msgid "%d error out of %d. Search %s for test number %s" +msgid_plural "%d errors out of %d. Search %s for test numbers %s" +msgstr[0] "" +msgstr[1] "" diff --git a/po/R-zh_CN.po b/po/R-zh_CN.po new file mode 100644 index 0000000000..7e78584fd7 --- /dev/null +++ b/po/R-zh_CN.po @@ -0,0 +1,2768 @@ +msgid "" +msgstr "" +"Project-Id-Version: data.table 1.12.5\n" +"POT-Creation-Date: 2020-07-17 14:38\n" +"PO-Revision-Date: 2019-11-16 18:37+0800\n" +"Last-Translator: Xianying Tan \n" +"Language-Team: Mandarin\n" +"Language: Mandarin\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=1; plural=0;\n" + +msgid "data.table package loaded. When developing don't load package" +msgstr "data.table包已载入, 开发时无需载入" + +msgid "" +"Internal error -- difftime objects may not be added to IDate, but Ops " +"dispatch should have intervened to prevent this" +msgstr "" +"内部错误 -- 'difftime'对象可能不能被添加到IDate类型但是正确操作应该防止此行为" +"发生" + +msgid "binary + is not defined for \"IDate\" objects" +msgstr "没有为\"IDate\" 对象定义的'+'操作" + +msgid "can only subtract from \"IDate\" objects" +msgstr "只能从\"IDate\"对象中减去" + +msgid "Internal error: storage mode of IDate is somehow no longer integer" +msgstr "内部错误: IDate的存储模式不为整型" + +msgid "unary - is not defined for \"IDate\" objects" +msgstr "没有为\"IDate\" 对象定义的一元的'-'操作" + +msgid "" +"Internal error -- difftime objects may not be subtracted from IDate, but Ops " +"dispatch should have intervened to prevent this" +msgstr "" +"内部错误 -- 不能与IDate类型中减去'difftime'对象但是正确操作应该防止此行为发生" + +msgid "Valid options for ms are 'truncate'," +msgstr "'ms'有效的选项为'truncate'" + +msgid "'nearest', and 'ceil'." +msgstr "'nearest'和'ceil'" + +msgid "" +"as.data.table.array method should only be called for arrays with 3+ " +"dimensions; use the matrix method for 2-dimensional arrays" +msgstr "" +"请只对3维或以上的数组使用as.data.table.array方法对二维数组请使用matrix方法" + +msgid "" +"Argument 'value.name' must be scalar character, non-NA and at least one " +"character" +msgstr "参数'value.name'必须为标量字符或non-NA至少包含一个字符" + +msgid "Argument 'sorted' must be scalar logical and non-NA" +msgstr "参数'sorted'必须为标量逻辑或non-NA" + +msgid "Argument 'na.rm' must be scalar logical and non-NA" +msgstr "参数'na.rm'必须为标量逻辑或non-NA" + +msgid "Please provide either 'key' or 'sorted', but not both." +msgstr "请提供参数'key'或'sorted',但不可同时提供" + +msgid "Argument 'value.name' should not overlap with column names in result:" +msgstr "参数'value.name'不能与结果中已有列名重复" + +msgid "" +"POSIXlt column type detected and converted to POSIXct. We do not recommend " +"use of POSIXlt at all because it uses 40 bytes to store one date." +msgstr "" +"检测到使用了POSIXlt类型的列, 并转成POSIXctdata.table不建议使用POSIXlt对象, " +"因为其使用40字节来存储一个日期" + +msgid "Item" +msgstr "条目" + +msgid "has" +msgstr "具有" + +msgid "rows but longest item has" +msgstr "行,但最长条目有" + +msgid "; recycled with remainder." +msgstr "用余数循环填充" + +msgid "has 0 rows but longest item has" +msgstr "没有行,但最长的条目有" + +msgid "; filled with NA" +msgstr "用NA填充" + +msgid "A column may not be called .SD. That has special meaning." +msgstr "无法将列命名为 .SD,因为 .SD 为特殊符号。" + +msgid "class must be length 1" +msgstr "class 的长度必须为 1" + +msgid "between has been passed an argument x of type logical" +msgstr "传入 between 的参数 x 为逻辑(logical)型" + +msgid "" +"'between' function the 'x' argument is a POSIX class while 'lower' was not, " +"coercion to POSIX failed with:" +msgstr "" +"'between' 中的 'x' 参数为 POSIX 类,而 'lower' 并不是,将 'lower' 自动转换成 " +"POSIX 失败:" + +msgid "" +"'between' function the 'x' argument is a POSIX class while 'upper' was not, " +"coercion to POSIX failed with:" +msgstr "" +"'between' 中的 'x' 参数为 POSIX 类,而 'upper' 并不是,将 'upper' 自动转换成 " +"POSIX 失败:" + +msgid "" +"'between' lower= and upper= are both POSIXct but have different tzone " +"attributes:" +msgstr "" +"'between' 中的 lower= 和 upper= 均为 POSIXct 类型但却有不同的时区属性" +"(tzone):" + +msgid ". Please align their time zones." +msgstr "。请确保二者的时区一致。" + +msgid "" +"'between' arguments are all POSIXct but have mismatched tzone attributes:" +msgstr "'between' 的参数均为 POSIXct 类型但时区属性(tzone)不匹配:" + +msgid ". The UTC times will be compared." +msgstr "。将采用 UTC 时间进行比较。" + +msgid "trying to use integer64 class when 'bit64' package is not installed" +msgstr "试图使用 intger64 类型但 'bit64' 包尚未安装" + +msgid "" +"optimised between not available for this data type, fallback to slow R " +"routine" +msgstr "对这种数据类型的优化尚未实现,使用备用较慢的R方法。" + +msgid "" +"Not yet implemented NAbounds=TRUE for this non-numeric and non-character type" +msgstr "" +"对这种非数值(numeric)和非字符(character)的类型,尚未实现 NAbounds=TRUE 的" +"功能" + +msgid "Some lower>upper for this non-numeric and non-character type" +msgstr "" +"对于该非数值(numeric)和非字符(character)类型的输入,存在一部分下界" +"(lower)> 上界(upper)的情况" + +msgid "RHS has length()" +msgstr "右手侧(RHS)的长度为" + +msgid "; expecting length 2." +msgstr ";其长度应为 2。" + +msgid "c" +msgstr "c" + +msgid "Perhaps you meant %s?" +msgstr "或许你想用的是 %s?" + +msgid "The first element should be the lower bound(s);" +msgstr "第一个元素应为下界;" + +msgid "the second element should be the upper bound(s)." +msgstr "第二个元素应为上界。" + +msgid "forderv(query) took ..." +msgstr "forderv(query) 用了 ..." + +msgid "Generating final logical vector ..." +msgstr "产生最后的逻辑向量 ..." + +msgid "done in" +msgstr "用了" + +msgid "%s is type %s which is not supported by data.table join" +msgstr "%s的类型为%s,该类型无法用于 data.table 的联接" + +msgid "" +"Attempting roll join on factor column when joining %s to %s. Only integer, " +"double or character columns may be roll joined." +msgstr "" +"联接%s与%s时试图滚动联接(roll join)因子类型(factor)的列。但只有整数" +"(integer)、双精度(double)或字符(character)类型的列可以使用滚动联接。" + +msgid "Matching %s factor levels to %s factor levels." +msgstr "匹配 %s 的因子水平和 %s 的因子水平。" + +msgid "Coercing factor column %s to type character to match type of %s." +msgstr "将因子类型列 %s 强制转换成字符来匹配目 %s。" + +msgid "Matching character column %s to factor levels in %s." +msgstr "匹配字符类型列 %s 和 %s 的因子水平。" + +msgid "" +"Incompatible join types: %s (%s) and %s (%s). Factor columns must join to " +"factor or character columns." +msgstr "" +"不兼容的联结类型: %s (%s) 和 %s (%s)。 因子类型的列必须与因子类型或字符类型的" +"列才可以联结" + +msgid "%s has same type (%s) as %s. No coercion needed." +msgstr "%s 有 %s 的类型。不需要强制转换。" + +msgid "Coercing all-NA %s (%s) to type %s to match type of %s." +msgstr "强制转换 all-NA %s (%s) 为 %s 类型用来匹配 %s 类型。" + +msgid "Incompatible join types: %s (%s) and %s (%s)" +msgstr "不兼容的联结类型: %s (%s) 和 %s (%s)。" + +msgid "Coercing %s column %s%s to type integer64 to match type of %s." +msgstr "强制转换 %s 个列 %s%s 为整数64类型用来匹配 %s 类型。" + +msgid "" +"Incompatible join types: %s is type integer64 but %s is type double and " +"contains fractions" +msgstr "" +"不兼容的联结类型: %s 是 integer64 类型的列但 %s 是有分数的双精度类型列。" + +msgid "" +"Coercing double column %s (which contains no fractions) to type integer to " +"match type of %s" +msgstr "强制转换双精度列 %s (不含有分数) 为整数用来匹配 %s 类型" + +msgid "" +"Coercing integer column %s to type double to match type of %s which contains " +"fractions." +msgstr "强制转换整数列 %s 为双精度用来匹配含有分数的 %s 类型。" + +msgid "Coercing integer column %s to type double for join to match type of %s." +msgstr "强制转换整数列 %s 为双精度用来与类型 %s 进行联结。" + +msgid "on= matches existing key, using key" +msgstr "on=和现有键(key)相等,用键" + +msgid "on= matches existing index, using index" +msgstr "on=和现有索引(index)相等,用索引" + +msgid "Calculated ad hoc index in %s" +msgstr "计算临时索引用了 %s" + +msgid "Non-equi join operators detected ..." +msgstr "侦测到不等长联结操作符(operator)..." + +msgid "roll is not implemented for non-equi joins yet." +msgstr "不等长联结还不能执行 roll " + +msgid "forder took ..." +msgstr "forder 用了 ..." + +msgid "Generating group lengths ..." +msgstr "正在生成组的长度。。。" + +msgid "Generating non-equi group ids ..." +msgstr "正在生成不等长的组标识符 . . . " + +msgid "Column name '_nqgrp_' is reserved for non-equi joins." +msgstr "列名 '_nqgrp_' 是为不等长联结保留的" + +msgid "Recomputing forder with non-equi ids ..." +msgstr "用不等长的组标志符重新计算 forder . . . " + +msgid "Found %d non-equi group(s) ..." +msgstr "找到%d不等长分组 ..." + +msgid "Starting bmerge ..." +msgstr "bmerge开始..." + +msgid "bmerge done in" +msgstr "bmerge 用了" + +msgid "" +"cedta decided '%s' wasn't data.table aware. Here is call stack with [[1L]] " +"applied:" +msgstr "cedta决定data.table不识别 '%s'。使用[[1L]]后的呼叫堆叠就是:" + +msgid "key argument of data.table() must be character" +msgstr "data.table() 的key参数必须是字符" + +msgid "Object '" +msgstr "对象 '" + +msgid "' not found. Perhaps you intended" +msgstr "' 不存在, 可能你打算" + +msgid "," +msgstr "," + +msgid "or" +msgstr "或者" + +msgid "more" +msgstr "更多" + +msgid "' not found amongst" +msgstr "' 不存在" + +msgid "and" +msgstr "并且" + +msgid "Provide either by= or keyby= but not both" +msgstr "提供 by= 或 keyby= ,但两者不能同时存在" + +msgid "Ignoring keyby= because j= is not supplied" +msgstr "因为没有提供 j= ,所以忽略 keyby= " + +msgid "Ignoring by= because j= is not supplied" +msgstr "因为没有提供 j= ,所以忽略 by= " + +msgid "" +"When on= is provided but not i=, on= must be a named list or data.table|" +"frame, and a natural join (i.e. join on common names) is invoked. Ignoring " +"on= which is '" +msgstr "" +"当提供 on= 而不提供 i= 的时候, on= 必须是带名称的 list 或者 data.table 或者 " +"data.frame,并且会调用自然联结(例如,按照共有名称联结),忽略 on= " + +msgid "'." +msgstr "'。" + +msgid "" +"i and j are both missing so ignoring the other arguments. This warning will " +"be upgraded to error in future." +msgstr "i 和 j 都缺少的时候忽略其他参数。将来此警告信息将升级为错误信息。" + +msgid "mult argument can only be 'first', 'last' or 'all'" +msgstr "mult 参数只能赋值为 'first', 'last' 或 'all'" + +msgid "" +"roll must be a single TRUE, FALSE, positive/negative integer/double " +"including +Inf and -Inf or 'nearest'" +msgstr "" +"roll 必须是单个参数,例如 TRUE, FALSE, 正或负的 integer 或 double包括 " +"+Inf , -Inf 或 'nearest'" + +msgid "roll is '" +msgstr "roll 是" + +msgid "' (type character). Only valid character value is 'nearest'." +msgstr "'(字符类型)。 唯一有效的字符值是'nearest'。" + +msgid "rollends must be a logical vector" +msgstr "rollends必须是一个逻辑向量" + +msgid "rollends must be length 1 or 2" +msgstr "rollends 的长度必须是 1 或者 2" + +msgid "" +"nomatch= must be either NA or NULL (or 0 for backwards compatibility which " +"is the same as NULL)" +msgstr "nomatch= 必须是 NA 或 NULL (或者在向后兼容的情形下为 0,这等同于 NULL)" + +msgid "which= must be a logical vector length 1. Either FALSE, TRUE or NA." +msgstr "which= 必须是一个长度为 1 的逻辑向量。其取值为 FALSE,TRUE 或者 NA。" + +msgid "which==" +msgstr "which==" + +msgid "" +"(meaning return row numbers) but j is also supplied. Either you need row " +"numbers or the result of j, but only one type of result can be returned." +msgstr "" +"(表示行数会被返回) 但是 j 也被提供了。你可能需要行数或者是 j 的结果,但是只能" +"返回一种结果。" + +msgid "" +"which=NA with nomatch=0 would always return an empty vector. Please change " +"or remove either which or nomatch." +msgstr "" +"同时使用 which=NA 和 nomatch=0 会得到一个空向量。请改变或者是移除 which或 " +"nomatch 的取值" + +msgid "j must be provided when with=FALSE" +msgstr "如果with=FALSE(假),j必须要赋值" + +msgid "" +"The symbol .. is invalid. The .. prefix must be followed by at least one " +"character." +msgstr "符号 .. 是无效的。前缀 .. 之后必须要有至少一个字符" + +msgid "Variable '" +msgstr "变量 '" + +msgid "" +"' is not found in calling scope. Looking in calling scope because you used " +"the .. prefix." +msgstr "' 并没有存在于调用环境中。之所以在调用环境中寻找是因为你使用了..的前缀" + +msgid "Variable '.." +msgstr "变量 '.." + +msgid "" +"' does exist in calling scope though, so please just removed the .. prefix " +"from that variable name in calling scope." +msgstr "' 并不存在于调用环境中。所以请移除在调用环境中那个变量名字的..前缀" + +msgid "Both '" +msgstr "两个都有 '" + +msgid "' and '.." +msgstr "' 和 '.." + +msgid "' exist in calling scope. Please remove the '.." +msgstr "' 当前存在于调用环境. 请删除 '.." + +msgid "' variable in calling scope for clarity." +msgstr "这个调用环境里的变量以方便理解" + +msgid "" +"Internal error: DT[, ..var] should be dealt with by the branch above now." +msgstr "内部错误: DT[, ..var]应该被分支处理中。" + +msgid "" +"' is not found in calling scope. Looking in calling scope because you set " +"with=FALSE. Also, please use .. symbol prefix and remove with=FALSE." +msgstr "" +"' 并没有存在于调用环境中。之所以在调用环境中搜索是因为你使用了with=FALSE。请" +"使用 .. 符号前缀并且移除 with=FALSE。" + +msgid "" +"You have wrapped := with {} which is ok but then := must be the only thing " +"inside {}. You have something else inside {} as well. Consider placing the " +"{} on the RHS of := instead; e.g. DT[,someCol:={tmpVar1<-...;tmpVar2<-...;" +"tmpVar1*tmpVar2}" +msgstr "" +"用 {} 套用 := 可行,但是 {} 中只能有 := 。而你现在 {} 中还有其他的参数。请尝" +"试将 {} 置于 := 的RHS之上;比如,DT[,someCol:={tmpVar1<-...; tmpVar2<-...; " +"tmpVar1*tmpVar2}" + +msgid "" +":= with keyby is only possible when i is not supplied since you can't setkey " +"on a subset of rows. Either change keyby to by or remove i" +msgstr "" +":=和keyby的组合只有在i没有赋值下才合理存在。因为你不能在一个行的子集调用" +"setkey。要么把keyby换成by或者是移除i" + +msgid "nomatch isn't relevant together with :=, ignoring nomatch" +msgstr "nomatch 并不和 := 有任何的相关,将忽略nomatch" + +msgid "" +"not-join '!' prefix is present on i but nomatch is provided. Please remove " +"nomatch." +msgstr "" +"not-join '!' 前缀在 i 中存在,但是 nomatch 也被提供了。需要移除nomatch。" + +msgid "" +"Operator := detected in i, the first argument inside DT[...], but is only " +"valid in the second argument, j. Most often, this happens when forgetting " +"the first comma (e.g. DT[newvar := 5] instead of DT[ , new_var := 5]). " +"Please double-check the syntax. Run traceback(), and debugger() to get a " +"line number." +msgstr "在 i, 即 DT[...] 中的第一个参数,中检测出操作符 := ,但该操作符仅在 j," +"即 DT[...] 中的第二个参数中使用才有效。通常,该错误发生在忘记" +"添加第一个逗号时 (如错误地将 [DT , new_var := 5] 写作 DT[newvar := 5])。" +"请再次检查语法是否正确。运行 trackback(),和 debugger() 来获取发生错误的行号。" + +msgid "is not found in calling scope" +msgstr "不存在调用环境里" + +msgid "" +"When the first argument inside DT[...] is a single symbol (e.g. DT[var]), " +"data.table looks for var in calling scope." +msgstr "" +"当DT[...]的第一个参数是一个单个的符号(e.g. DT[var]),data.table会在调用环境中" +"搜寻var。" + +msgid "" +"i is invalid type (matrix). Perhaps in future a 2 column matrix could return " +"a list of elements of DT (in the spirit of A[B] in FAQ 2.14). Please report " +"to data.table issue tracker if you'd like this, or add your comments to FR " +"#657." +msgstr "" +"i不是一个有效的类型(矩阵)。也许在以后一个包含两列的矩阵会返回包含一串元素的" +"DT (请参考问答集2.14的A[B])。如果你有需求,请将此问题汇报给data.table 问题追" +"踪器或者是在FR中留下你的想法" + +msgid "" +"When i is a data.table (or character vector), the columns to join by must be " +"specified using 'on=' argument (see ?data.table), by keying x (i.e. sorted, " +"and, marked as sorted, see ?setkey), or by sharing column names between x " +"and i (i.e., a natural join). Keyed joins might have further speed benefits " +"on very large data due to x being sorted in RAM." +msgstr "" +"但i是一个 data.table (或者是字符向量),必须使用 'on=' 参数指明参与连接的列 " +"(参见 ?data.table),可以是keying x(比如,已排序过,和标记已排序过,请参见?" +"setkey),或者是在x和i共用列的名字(比如,自然连接)。如果x有在内存被排序过,键" +"(keyed)连接的速度会在非常大的数据上有较明显的提高。" + +msgid "Attempting to do natural join but no common columns in provided tables" +msgstr "尝试进行自然连接然而并没有找到表格中相同的列" + +msgid "Joining but 'x' has no key, natural join using" +msgstr "联结但 'x' 没有键 (key),自然联结用" + +msgid "not-join called with 'by=.EACHI'; Replacing !i with i=setdiff_(x,i) ..." +msgstr "" +"配套使用了 not-join 和 'by=.EACHI' 的命令; 用 !i 取代 i=setdiff_(x,i) ..." + +msgid "Constructing irows for '!byjoin || nqbyjoin' ..." +msgstr "构造 irows 用来对应于 '!byjoin || nqbyjoin' ..." + +msgid "Internal error. Cannot by=.EACHI when joining to an index, yet" +msgstr "内部错误:目前尚无法对索引(index)使用by=.EACH命令" + +msgid "Internal error. irows has length in by=.EACHI" +msgstr "内部错误:by=.EACHI 中 irows 有长度" + +msgid "Reorder irows for 'mult==\"all\" && !allGrp1' ..." +msgstr "对'mult==\"all\" && !allGrp1'再排序irows ..." + +msgid "Reordering %d rows after bmerge done in ..." +msgstr "bmerge 之后再排序%d行用了..." + +msgid "logical error. i is not a data.table, but 'on' argument is provided." +msgstr "逻辑错误。当 i 并非一个 data.table时,不应提供'on'参数" + +msgid "i has evaluated to type" +msgstr "i 运算结果为类型" + +msgid ". Expecting logical, integer or double." +msgstr "。期望布尔类型,整型或浮点型。" + +msgid "i evaluates to a logical vector length" +msgstr "i 为一个布尔类型向量的长度。" + +msgid "but there are" +msgstr "但是存在" + +msgid "" +"rows. Recycling of logical i is no longer allowed as it hides more bugs than " +"is worth the rare convenience. Explicitly use rep(...,length=.N) if you " +"really need to recycle." +msgstr "" +"行。不再允许布尔值 i 循环补齐,尽管这样有些许便利,但会隐藏更多的 bug,得不偿" +"失。若确实需要循环补齐,请直接使用 rep(...,length=.N)。" + +msgid "Internal error: notjoin but byjoin or !integer or nomatch==NA" +msgstr "内部错误。原因可能为:notjoin 而非 byjoin;非整数;nomatch 为空" + +msgid "Inverting irows for notjoin done in ..." +msgstr "对 notjoin 求逆 irows 用了 ..." + +msgid "" +"with=FALSE together with := was deprecated in v1.9.4 released Oct 2014. " +"Please wrap the LHS of := with parentheses; e.g., DT[,(myVar):=sum(b),by=a] " +"to assign to column name(s) held in variable myVar. See ?':=' for other " +"examples. As warned in 2014, this is now a warning." +msgstr "" +"2014年10月发布的1.9.4版本中,with=FALSE 和 := 共用的用法已被弃用。请把 := 左" +"侧部分打上括号;例如,DT[,(myVar):=sum(b),by=a]对 myVar 中的列名进行赋值。输" +"入 ?':=' 参看其他的例子。正如2014年的版本中所说明的,现在这种用法会出现警告。" + +msgid "" +"with=FALSE ignored, it isn't needed when using :=. See ?':=' for examples." +msgstr "" +"当使用 :=. 的时候,with=FALSE 是多余的,会被忽略。输入 ?':=' 参看例子。" + +msgid "column(s) not removed because not found:" +msgstr "列未被删除因为不存在:" + +msgid "column(s) not found:" +msgstr "列不存在" + +msgid "of j is" +msgstr "j 是" + +msgid "which is outside the column number range [1,ncol=" +msgstr "不在列索引范围内 [1,ncol=" + +msgid "]" +msgstr "]" + +msgid "j mixes positives and negatives" +msgstr "j 中同时存在正数和负数" + +msgid "" +"When with=FALSE, j-argument should be of type logical/character/integer " +"indicating the columns to select." +msgstr "当 with=FALSE,参数 j 必须为布尔型/字符型/整型之一,表征要选择的列。" + +msgid "by=c(...), key(...) or names(...) must evaluate to 'character'" +msgstr "by=c(...), key(...) 或 names(...) 只接受 'character' " + +msgid "'by' is a character vector length" +msgstr "'by' 是一个字符型向量,长度为" + +msgid "" +"but one or more items include a comma. Either pass a vector of column names " +"(which can contain spaces, but no commas), or pass a vector length 1 " +"containing comma separated column names. See ?data.table for other " +"possibilities." +msgstr "" +"但是其中包含一个或多个逗号。请传入一个列名组成的向量(可以包含空格,但是不能" +"包含逗号),或传入一个长度为1,由逗号分隔的列名组成的向量输入 ?data.table查看" +"其他的选项。" + +msgid "by index '%s' but that index has 0 length. Ignoring." +msgstr "by 索引(index) '%s' 但那索引的长度为0。将被忽视。" + +msgid "Internal error: irows isn't integer" +msgstr "内部错误:irows 不是整型" + +msgid "i clause present and columns used in by detected, only these subset:" +msgstr "有 i 子句和在 by 用的列被侦测, 子集只有这个:" + +msgid "" +"i clause present but columns used in by not detected. Having to subset all " +"columns before evaluating 'by': '" +msgstr "" +"有 i 子句但是在 by 用的列并没有被侦测。于是所有的列将用于接下里的 'by': 运" +"算。" + +msgid "" +"'by' appears to evaluate to column names but isn't c() or key(). Use " +"by=list(...) if you can. Otherwise, by=eval" +msgstr "" +"传递给 'by' 参数的似乎是列名,但没有用 c() 或者 key() 函数。如若可以,请使用" +"by=list(...)。此外,by=eval" + +msgid "" +"should work. This is for efficiency so data.table can detect which columns " +"are needed." +msgstr "" +"应该是可行的。这样做是出于性能考虑,凭此 data.table 可以判断哪些列是需要的。" + +msgid "" +"'by' or 'keyby' must evaluate to a vector or a list of vectors (where 'list' " +"includes data.table and data.frame which are lists, too)" +msgstr "" +"'by' 或者 'keyby' 参数只接受一个向量或由向量组成的列表(这里 'list'包含 data." +"table 和 data.frame,这二者本质也是列表" + +msgid "column or expression" +msgstr "列或者表达式" + +msgid "of 'by' or 'keyby' is type" +msgstr "传递给 'by' 和 'keyby' 参数的类型是" + +msgid "" +". Do not quote column names. Usage: DT[,sum(colC),by=list(colA,month(colB))]" +msgstr "。请勿引用列名。用法:DT[,sum(colC),by=list(colA,month(colB))]" + +msgid "" +"The items in the 'by' or 'keyby' list are length(s) (%s). Each must be " +"length %d; the same length as there are rows in x (after subsetting if i is " +"provided)." +msgstr "" +"在'by'或'keyby'列表中的项长度为 %s。每一项的长度须均为%d,即应与 x (或经 i " +"筛选后的子集)中所包含行数相同。" + +msgid "" +"by-expression '%s' is not named, and the auto-generated name '%s' clashed " +"with variable(s) in j. Therefore assigning the entire by-expression as name." +msgstr "" +"by-expression '%s' 没有命名,自动生成的名字 '%s' 与 j 中的变量名冲突。将用 " +"by-expression 用来命名。" + +msgid "Internal error: drop_dot passed" +msgstr "内部错误:drop_dot 传入的参数有" + +msgid "items" +msgstr "项" + +msgid "Item %d of the .() or list() passed to j is missing" +msgstr "传递给j的 .() 或 list()中第%d项缺失" + +msgid "" +"Different branches of j expression produced different auto-named columns:" +msgstr "j表达式中的不同分支自动生成的列名不同:" + +msgid "%s!=%s" +msgstr "%s!=%s" + +msgid "; using the most \"last\" names" +msgstr ";将使用最晚生成的名字" + +msgid "" +"When .SDcols is a function, it is applied to each column; the output of this " +"function must be a non-missing boolean scalar signalling inclusion/exclusion " +"of the column. However, these conditions were not met for:" +msgstr "" +"当传入 .SDcols 的参数为一个方程时,该方程将应用于每一列,并须返回单个非缺失值" +"的布尔值指示该列是否应当被包含/排除。然而上述条件对如下列并不满足:" + +msgid ".SDcols missing at the following indices:" +msgstr ".SDcols 的如下位置为缺失值:" + +msgid ".SDcols is numeric but has both +ve and -ve indices" +msgstr ".SDcols 为数值,但同时具有 +ve 和 -ve 索引" + +msgid ".SDcols is numeric but out of bounds [1," +msgstr ".SDcols 为数值但超出了 [1," + +msgid "] at:" +msgstr "] 的范围:" + +msgid ".SDcols should be column numbers or names" +msgstr ".SDcols 应为列数或是列名" + +msgid "Some items of .SDcols are not column names:" +msgstr ".SDcols 中的部份项目不是列名:" + +msgid "" +"'(m)get' found in j. ansvars being set to all columns. Use .SDcols or a " +"single j=eval(macro) instead. Both will detect the columns used which is " +"important for efficiency.\n" +"Old ansvars: %s" +msgstr "在 j 中检测出 '(m)get'。ansvars 将被设为所以列。请使用 .SDcols 或" +"j=eval(macro) 来代替。二者均可检测出实际参与运算的列,这对提高运行效率非常重要。\n" +"旧的 ansvars:%s" + +msgid "New ansvars: %s" +msgstr "新的 ansvars: %s" + +msgid "" +"This j doesn't use .SD but .SDcols has been supplied. Ignoring .SDcols. See ?" +"data.table." +msgstr "此处 j 不使用 .SD 但提供了 .SDcols ,因此忽略 .SDcols详见 ?data.table" + +msgid "Detected that j uses these columns:" +msgstr "侦测 j 用这个列:" + +msgid "" +"'(m)get' found in j. ansvars being set to all columns. Use .SDcols or a " +"single j=eval(macro) instead. Both will detect the columns used which is " +"important for efficiency.\n" +"Old:" +msgstr "" +"j 中找到了 '(m)get'。ansvars 将应用到所有的列。请考虑使用 .SDcols 或者一个单" +"独的 j=eval(macro)两个命令都会侦测影响效率的列。\n" +"旧:" + +msgid "New:" +msgstr "新:" + +msgid "" +".SD is locked. Using := in .SD's j is reserved for possible future use; a " +"tortuously flexible way to modify by group. Use := in j directly to modify " +"by group by reference." +msgstr "" +".SD 已锁定,在 .SD 的 j 中使用 := 进行分组修改是较不直观的方式此功能被保留" +"以供未来使用请直接在 j 中使用 := 依照引用进行分组修改" + +msgid "In `:=`(col1=val1, col2=val2, ...) form, all arguments must be named." +msgstr "在`:=`(col1=val1, col2=val2, ...) 中,所有参数必须被指名" + +msgid "" +"LHS of := must be a symbol, or an atomic vector (column names or positions)." +msgstr ":= 的 LHS 必须是符号或是原子向量(列名或是列的位置)" + +msgid "" +"LHS of := appears to be column positions but are outside [1,ncol] range. New " +"columns can only be added by name." +msgstr ":= 的 LHS 是列的位置但超出了 [1,ncol] 的范围新列只能以名称的方式新增" + +msgid "" +"LHS of := isn't column names ('character') or positions ('integer' or " +"'numeric')" +msgstr ":= 的 LHS 不是列名('字符')或列的位置('整数'或'数值')" + +msgid "" +"No rows match i. No new columns to add so not evaluating RHS of :=\n" +"Assigning to 0 row subset of %d rows" +msgstr "" +"没有找到匹配 i 的行。无法增加新的列所以无法运算 RHS of :=\n" +"指定一个 0 行的子集" + +msgid "" +"Invalid .internal.selfref detected and fixed by taking a (shallow) copy of " +"the data.table so that := can add this new column by reference. At an " +"earlier point, this data.table has been copied by R (or was created manually " +"using structure() or similar). Avoid names<- and attr<- which in R currently " +"(and oddly) may copy the whole data.table. Use set* syntax instead to avoid " +"copying: ?set, ?setnames and ?setattr. If this message doesn't help, please " +"report your use case to the data.table issue tracker so the root cause can " +"be fixed or this message improved." +msgstr "" +"侦测到无效的 .internal.selfref ,已藉由获取 data.table 的(浅层)副本的方式修复" +"以便 := 能利用引用加入新列在过去的某个时间点,此 data.table 已被 R 复制(或是" +"以 structure()等方式手动生成)请避免 names<- 与 attr<- 等目前(与偶发)可能会在 " +"R 中复制整个data.table的操作请改用 set* 语法以避免复制,详见 ?set、?setnames " +"及 ?setattr如果以上讯息无法提供帮助,请回报你的案例至 data.table 问题追踪以助" +"于修复根本原因或改进本讯息" + +msgid "" +"Growing vector of column pointers from truelength %d to %d. A shallow copy " +"has been taken, see ?setalloccol. Only a potential issue if two variables " +"point to the same data (we can't yet detect that well) and if not you can " +"safely ignore this. To avoid this message you could setalloccol() first, " +"deep copy first using copy(), wrap with suppressWarnings() or increase the " +"'datatable.alloccol' option." +msgstr "" +"列指针向量从 truelength %d 增加为 %d。浅拷贝已经完成,详见 ?setalloccol。如果" +"两个变量指向同一个数据 (这个我们无法侦测),会导致潜在的问题。如果并没有,你" +"可以:忽视这个问题。如果想要避免警告,可以使用以下任一命令,像是 " +"setalloccol(),用 copy() 深度拷贝,套用 suppressWarnings() 或者是增加 " +"'datatable.alloccol' 的选项。" + +msgid "" +"Note that the shallow copy will assign to the environment from which := was " +"called. That means for example that if := was called within a function, the " +"original table may be unaffected." +msgstr "" +"需要注意的是这个浅拷贝会被指向给调用了 which := 的环境。意思就是说,如果在函" +"数内部调用了 if :=, 原先的 table 可能不会有任何变化。" + +msgid "" +"Cannot assign to an under-allocated recursively indexed list -- L[[i]][,:=] " +"syntax is only valid when i is length 1, but it's length" +msgstr "" +"无法指定配置不足的递归索引列表-- L[[i]][,:=] 语法只有在 i 长度为1时有效,但它" +"的長度" + +msgid "Internal error -- item '" +msgstr "内部错误 -- 项目 '" + +msgid "' not found in names of list" +msgstr "' 未能在名称列表中找到" + +msgid "Internal error -- column(s) not found:" +msgstr "内部错误 -- 找不到此列:" + +msgid "" +"strptime() usage detected and wrapped with as.POSIXct(). This is to minimize " +"the chance of assigning POSIXlt columns, which use 40+ bytes to store one " +"date (versus 8 for POSIXct). Use as.POSIXct() (which will call strptime() as " +"needed internally) to avoid this warning." +msgstr "" +"侦测到使用 strptime() ,已用 as.POSIXct() 包裹这么做是为了尽量避免列被指定为 " +"POSIXltPOSIXlt用40个以上的位元组储存日期(相较于 POSIXct 只用8位元组)请使用 " +"as.POSIXct() 以避免本警告 (此函数会根据需求在内部调用 strptime())" + +msgid "" +"' is not found in calling scope. Looking in calling scope because this " +"symbol was prefixed with .. in the j= parameter." +msgstr "" +"' 未能在调用范围 (calling scope) 中找到,请查看调用范围因为 j= 的参数以 .. " +"作为前缀" + +msgid "Internal error: xcolAns does not pass checks:" +msgstr "内部错误 : xcolAns 无法通过检查:" + +msgid "" +"Internal error: irows is NULL when making join result at R level. Should no " +"longer happen now we use CsubsetDT earlier." +msgstr "" +"内部错误 : 在 R 生成连接结果时,irows为 NULL 我们已使用了 CsubsetDT,现在不应" +"该再发生了" + +msgid "j (the 2nd argument inside [...]) is a single symbol but column name '" +msgstr "j ( [...] 中的第二顺位参数) 是单个符号而列名 '" + +msgid "' is not found. Perhaps you intended DT[, .." +msgstr "' 未被找到,也许你打算 DT[, .." + +msgid "" +"]. This difference to data.frame is deliberate and explained in FAQ 1.1." +msgstr "] ,在FAQ 1.1 中有解释dat.table与data.frame的差别" + +msgid "" +"Internal error: j has created a data.table result containing a NULL column" +msgstr "内部错误 : j 创建了一个有列为 NULL 的 data.table" + +msgid "" +"The column '.N' can't be grouped because it conflicts with the special .N " +"variable. Try setnames(DT,'.N','N') first." +msgstr "" +"无法对 '.N' 列进行分组,因为与 data.table 特有的 .N 变量冲突请先尝试 " +"setnames(DT,'.N','N')" + +msgid "" +"The column '.I' can't be grouped because it conflicts with the special .I " +"variable. Try setnames(DT,'.I','I') first." +msgstr "" +"无法对 '.I' 列进行分组,因为与 data.table 特有的 .I 变量冲突请先尝试 " +"setnames(DT,'.I','I')" + +msgid "" +"Note: forcing units=\"secs\" on implicit difftime by group; call difftime " +"explicitly to choose custom units" +msgstr "" +"注意:在隐含的 difftime 强制分组使用了 units=\"secs\"; 请明确的调用 difftime " +"来选择自定义的单位。" + +msgid "logical error. i is not data.table, but mult='all' and 'by'=.EACHI" +msgstr "逻辑错误: i 不是data.table,但 mult='all' 及 'by'=.EACHI" + +msgid "Internal error: by= is missing" +msgstr "内部错误 : 缺少 by=" + +msgid "Finding groups using forderv ..." +msgstr "搜寻组中配套使用了 forderv . . . " + +msgid "Finding group sizes from the positions (can be avoided to save RAM) ..." +msgstr "从位置中搜寻组的大小 (避免此举来节省内存) . . ." + +msgid "Getting back original order ..." +msgstr "恢复原有的顺序 . . . " + +msgid "Finding groups using uniqlist on key ..." +msgstr "搜寻组并配套使用了将 uniqlist 用在键 (key) ... " + +msgid "Internal error: byindex not the index name" +msgstr "内部错误 : byindex 不是索引(index)名称" + +msgid "Finding groups using uniqlist on index '%s' ..." +msgstr "搜寻组并配套使用了将 uniqlist 用在索引 (index) '%s'... " + +msgid "Internal error: byindex not found" +msgstr "内部错误 : 找不到 byindex" + +msgid "lapply optimization changed j from '%s' to '%s'" +msgstr "lapply优化改变j从'%s'成'%s'" + +msgid "lapply optimization is on, j unchanged as '%s'" +msgstr "lapply优化打开了, j ('%s')没有区别" + +msgid "GForce optimized j to '" +msgstr "GForce优化 j 到 '" + +msgid "GForce is on, left j unchanged" +msgstr "GForce打开了, j 没有区别" + +msgid "" +"Unable to optimize call to mean() and could be very slow. You must name 'na." +"rm' like that otherwise if you do mean(x,TRUE) the TRUE is taken to mean " +"'trim' which is the 2nd argument of mean. 'trim' is not yet optimized." +msgstr "" +"无法优化对 mean() 的调用,这可能导致运行非常缓慢您必须使用 na.rm=TRUE,否则如" +"果您直接使用 mean(x,TRUE)会被认定为 trim=TRUE,trim 是 mean() 中尚未被优化的" +"第二顺位参数" + +msgid "Old mean optimization changed j from '%s' to '%s'" +msgstr "旧mean优化改变j 从'%s'成'%s'" + +msgid "Old mean optimization is on, left j unchanged." +msgstr "旧mean优化打开了,j没有区别。" + +msgid "All optimizations are turned off" +msgstr "所有优化关掉了" + +msgid "Optimization is on but left j unchanged (single plain symbol): '%s'" +msgstr "优化打开了但是并没有改变 j (一个普通符号):'%s'" + +msgid "Internal error: length(irows)!=length(o__)" +msgstr "内部错误:length(irows)!=length(o__)" + +msgid "Making each group and running j (GForce %s) ..." +msgstr "进行分组中,并且运行 j (GForce %s) ..." + +msgid "setkey() after the := with keyby= ..." +msgstr "keyby=中,:=后setkey() ..." + +msgid "" +"The setkey() normally performed by keyby= has been skipped (as if by= was " +"used) because := is being used together with keyby= but the keyby= contains " +"some expressions. To avoid this warning, use by= instead, or provide " +"existing column names to keyby=." +msgstr "" +"因为`:=`与`keyby=`一起使用且`keyby=`含有表达式, 所以代码跳过了一般`keyby=`会" +"执行的`setkey()` -- 代码只执行了`by=`。若要避免此警告, 请使用`by=`, 或者提供" +"`keyby=`现有的列名" + +msgid "Internal error: jvnames is length" +msgstr "内部错误:jvnames 是长度" + +msgid "but ans is" +msgstr "但是ans(答案)是" + +msgid "and bynames is" +msgstr "同时bynames是" + +msgid "setkey() afterwards for keyby=.EACHI ..." +msgstr "keyby=.EACHI中到底setkey() ..." + +msgid "rownames and rownames.value cannot both be used at the same time" +msgstr "rownames和rownames.value 不能同时使用" + +msgid "length(rownames)==" +msgstr "length(rownames)== (行名长度==)" + +msgid "but nrow(DT)==" +msgstr "但是nrow(DT)==" + +msgid "" +". The rownames argument specifies a single column name or number. Consider " +"rownames.value= instead." +msgstr "。 rownames参数为单一列名或单一数值。请考虑使用`rownames.values=`。" + +msgid "" +"length(rownames)==0 but should be a single column name or number, or NULL" +msgstr "" +"行名长度为零,`length(rownames)==0`,但应该为单一列名,单一数值,或NULL" + +msgid "rownames is TRUE but key has multiple columns" +msgstr "rownames是TRUE但键(key)不只一个列" + +msgid "; taking first column x[,1] as rownames" +msgstr "; 取第一列, `column x[,1]`, 为rownames" + +msgid "'" +msgstr "'" + +msgid "' is not a column of x" +msgstr "' 不是x的一个列" + +msgid "as.integer(rownames)==" +msgstr "as.integer(rownames)==" + +msgid "]." +msgstr "]." + +msgid "length(rownames.value)==" +msgstr "length(rownames.value)==" + +msgid "but should be nrow(x)==" +msgstr "但应该是nrow(x)==" + +msgid "" +"When i is a matrix in DT[i]<-value syntax, it doesn't make sense to provide j" +msgstr "当i以`DT[i]<-value`的形式出现,不需要提供j" + +msgid "j must be an atomic vector, see ?is.atomic" +msgstr "j必须是原子向量,请参考 ?is.atomic" + +msgid "NA in j" +msgstr "j里有NA" + +msgid "j must be vector of column name or positions" +msgstr "j 必须是列名(column name)或列位(column position)的向量" + +msgid "" +"Attempt to assign to column position greater than ncol(x). Create the column " +"by name, instead. This logic intends to catch (most likely) user errors." +msgstr "" +"试图指定至比ncol(x)还大的列位(column position)。请指定至列名(column name)。一" +"般来说用列名取代列位能解决大部分错误。" + +msgid "" +"data.table inherits from data.frame (from v1.5), but this data.table does " +"not. Has it been created manually (e.g. by using 'structure' rather than " +"'data.table') or saved to disk using a prior version of data.table?" +msgstr "" +"data.table继承自data.frame(v1.5),但这个data.table并不是。请检查这个data." +"table是不是手动创建的(可能创建时使用了`structure()`而非`data.table()`),或者" +"是不是使用了更早的data.table版本创建后存到硬盘了。" + +msgid "attempting to assign invalid object to dimnames of a data.table" +msgstr "试图指定无效对象给data.table的维度名(dimnames)" + +msgid "data.tables do not have rownames" +msgstr "data.tables没有rownames" + +msgid "Can't assign" +msgstr "无法指定" + +msgid "colnames to a" +msgstr "列名为一个" + +msgid "-column data.table" +msgstr "-列 data.table" + +msgid "'subset' must evaluate to logical" +msgstr "'subset' 必须为logical" + +msgid "Argument 'invert' must be logical TRUE/FALSE" +msgstr " 'invert' 的参数是逻辑值,必须是 TRUE/FALSE" + +msgid "x argument must be a data.table" +msgstr "参数 x 必须是一个 data.table" + +msgid "group length is 0 but data nrow > 0" +msgstr "分组长度为0,但 data nrow > 0" + +msgid "" +"passing 'f' argument together with 'by' is not allowed, use 'by' when split " +"by column in data.table and 'f' when split by external factor" +msgstr "" +"不可同时指定参数 'f' 和参数 'by' ,当利用 data.table的纵列进行数据分割时,请使" +"用参数 'by';当利用外部因子进行数据分割时,请使用参数 'f'" + +msgid "Either 'by' or 'f' argument must be supplied" +msgstr "必须提供参数 'by' 或参数 'f'" + +msgid "Column '.ll.tech.split' is reserved for split.data.table processing" +msgstr "为 split.data.table 进程,纵列 '.ll.tech.split' 被保存" + +msgid "Column '.nm.tech.split' is reserved for split.data.table processing" +msgstr "为 split.data.table 进程,纵列 '.nm.tech.split' 被保存" + +msgid "Argument 'by' must refer to column names in x" +msgstr "参数 'by' 只适用于 x 中的列名" + +msgid "" +"Argument 'by' must refer only to atomic-type columns, but the following " +"columns are non-atomic:" +msgstr "参数 'by' 只适用于原子类型的纵列,但现在关联的纵列不是原子类型" + +msgid "Processing split.data.table with:" +msgstr "运行 split.data.table 中使用: " + +msgid "" +"x is not a data.table. Shallow copy is a copy of the vector of column " +"pointers (only), so is only meaningful for data.table" +msgstr "" +"浅拷贝(shallow copy)只是列指针向量的拷贝,因此仅对 data.table 有意义,而 x " +"不是 data.table" + +msgid "setalloccol attempting to modify `*tmp*`" +msgstr "setalloccol 试图修改 '*tmp*'" + +msgid "" +"Input is a length=1 logical that points to the same address as R's global " +"value. Therefore the attribute has not been set by reference, rather on a " +"copy. You will need to assign the result back to a variable. See issue #1281." +msgstr "" +"输入值是一个指向与R全局值相同位置的长度为1的逻辑值。因此,该属性是通过副本," +"而不是reference 的形式设置。您需要将结果分配回一个变量,参看 issue #1281" + +msgid "x is not a data.table or data.frame" +msgstr "x 不是 data.table 或 data.frame." + +msgid "x has" +msgstr "x 有" + +msgid "columns but its names are length" +msgstr " 列,但其列名的数为 " + +msgid "Passed a vector of type '" +msgstr "传递了一个向量,向量类型是;" + +msgid "'. Needs to be type 'character'." +msgstr ". 需要是 'character' 类型." + +msgid "names to a" +msgstr "命名" + +msgid "column data.table" +msgstr "data.table 的纵列" + +msgid "'new' is not a character vector or a function" +msgstr "'new' 既不是特征向量也不是 function" + +msgid "NA in 'new' at positions" +msgstr "在 'new' 中有NA值" + +msgid "Some duplicates exist in 'old':" +msgstr "在'old' 中存在重复名称" + +msgid "'old' is type" +msgstr "'old' 的类型是" + +msgid "but should be integer, double or character" +msgstr "应该为整型,浮点型或者字符型" + +msgid "'old' is length" +msgstr "'old' 长度为" + +msgid "but 'new' is length" +msgstr "'new' 的长度为" + +msgid "NA (or out of bounds) in 'old' at positions" +msgstr "NA(或超出界限)出现在'old' 的位置" + +msgid "of 'old' is '" +msgstr "是" + +msgid "" +"' which appears several times in column names. Just the first will be " +"changed. There are" +msgstr "在列名中重复出现,仅第一个会改动,如下:" + +msgid "other items in old that are also duplicated in column names." +msgstr "old中的其他项在列名中出现重复" + +msgid "Items of 'old' not found in column names:" +msgstr "在列名中未找到 'old' 有关项" + +msgid ". Consider skip_absent=TRUE." +msgstr "尝试 skip_absent=TRUE" + +msgid "Internal error: length(i)!=length(new)" +msgstr "内部错误:length(i)!=length(new)" + +msgid "x has some duplicated column name(s):" +msgstr "x 有多个重复列名:" + +msgid ". Please remove or rename the duplicate(s) and try again." +msgstr "请移除或者重命名重复项并重试" + +msgid "Input is" +msgstr "输入为" + +msgid "but should be a plain list of items to be stacked" +msgstr "应该叠加普通列表项" + +msgid "" +"idcol must be a logical or character vector of length 1. If logical TRUE the " +"id column will named '.id'." +msgstr "" +"idcol必须为逻辑型向量或长度为1的字符型向量.如果逻辑值为TRUEid 列会命名为'.id'" + +msgid "use.names=NA invalid" +msgstr "use.names=NA 无效赋值" + +msgid "" +"use.names='check' cannot be used explicitly because the value 'check' is new " +"in v1.12.2 and subject to change. It is just meant to convey default " +"behavior. See ?rbindlist." +msgstr "" +"请勿直接使用use.names='check',因为值'check'为新增在v1.12.2中后续有所变化,仅" +"用表示默认模式详见 ?rbindlist" + +msgid "" +"Check that is.data.table(DT) == TRUE. Otherwise, := and `:=`(...) are " +"defined for use in j, once only and in particular ways. See help(\":=\")." +msgstr "" +"检查是否is.data.table(DT) == TRUE,否则,:= and `:=`(...) 为被界定在j使用,仅一" +"次以特别的方式使用,详见help(\":=\")" + +msgid "" +"setDF only accepts data.table, data.frame or list of equal length as input" +msgstr "setDF仅允许data.table,data.frame或者同样长度的列表作为输入" + +msgid "rownames contains duplicates" +msgstr "行名含有重复" + +msgid "rownames incorrect length; expected" +msgstr "行名长度不正确;需要" + +msgid "names, got" +msgstr "名字,用" + +msgid "All elements in argument 'x' to 'setDF' must be of same length" +msgstr "'setDF'中的参数'x'的所有元素必须同等长度" + +msgid "Cannot find symbol" +msgstr "无法找到符号" + +msgid "Cannot convert '" +msgstr "无法转换'" + +msgid "" +"' to data.table by reference because binding is locked. It is very likely " +"that '" +msgstr "' 为引用形式的 data.table,因为绑定被锁定了。很有可能 '" + +msgid "" +"' resides within a package (or an environment) that is locked to prevent " +"modifying its variable bindings. Try copying the object to your current " +"environment, ex: var <- copy(var) and then using setDT again." +msgstr "" +"' 存在于一个被锁定的包(或环境)中导致无法修改其绑定的变量。可以尝试复制对象" +"(object)到你的现有环境,如:var <- copy(var) 然后再使用 setDT。" + +msgid "Some columns are a multi-column type (such as a matrix column):" +msgstr "某些列是多重列类型(如矩阵列):" + +msgid "" +". setDT will retain these columns as-is but subsequent operations like " +"grouping and joining may fail. Please consider as.data.table() instead which " +"will create a new column for each embedded column." +msgstr "" +"。setDT 会原样保留这些列但后续的操作如编组(grouping)和联接(joining)可能会" +"失败。请考虑使用 as.data.table() 因为它会为每个内嵌列建立一个新列。" + +msgid "Column" +msgstr "列" + +msgid "" +"is of POSIXlt type. Please convert it to POSIXct using as.POSIXct and run " +"setDT again. We do not recommend use of POSIXlt at all because it uses 40 " +"bytes to store one date." +msgstr "" +"属于 POSIXlt 类型。请使用 as.POSIXct 转换为 POSIXct 并再次执行setDT。我们非常" +"不推荐使用 POSIXlt 因为它要用 40 字节来存储一个日期。" + +msgid "" +"All elements in argument 'x' to 'setDT' must be of same length, but the " +"profile of input lengths (length:frequency) is:" +msgstr "" +"'setDT' 的参数 'x' 中所有的元素都必须是同一长度,但输入长度的概况(长度" +"(length):频率(frequency))是:" + +msgid "%s:%d" +msgstr "%s:%d" + +msgid "The first entry with fewer than" +msgstr "第一个长度少于" + +msgid "entries is" +msgstr "的输入项是" + +msgid "" +"Argument 'x' to 'setDT' should be a 'list', 'data.frame' or 'data.table'" +msgstr "" +"'setDT' 参数 'x' 应为一个列表('list'),数据框('data.frame')或 'data." +"table'" + +msgid "Item '" +msgstr "项 '" + +msgid "' not found in names of input list" +msgstr "' 不存在于输入列表的子项名中" + +msgid "'prefix' must be NULL or a character vector of length 1." +msgstr "'prefix' 必须为 空(NULL)或者长度为 1 的字符向量。" + +msgid "x is a single vector, non-NULL 'cols' doesn't make sense." +msgstr "x 是单个向量,非空的 'cols' 没有意义。" + +msgid "x is a list, 'cols' cannot be 0-length." +msgstr "x 是一个列表(list),'cols' 长度不能为0。" + +msgid "" +"RHS of %s is length %d which is not 1 or nrow (%d). For robustness, no " +"recycling is allowed (other than of length 1 RHS). Consider %%in%% instead." +msgstr "" +"%s 的右手侧 (RHS) 长度为 %d, 其非 1 或 总行数 nrow (%d)。考虑到程序的稳健性," +"只有在右侧元素长度为 1 的情况下,我们才会对之进行循环。考虑改用 %%in%% 。" + +msgid "" +"Internal error in .isFastSubsettable. Please report to data.table developers" +msgstr ".isFastSubsettable 产生了内部错误。请向 data.table 开发者报告" + +msgid "" +"Subsetting optimization disabled because the cross-product of RHS values " +"exceeds 1e4, causing memory problems." +msgstr "筛选子集优化被停止,因为叉积后的RHS值将超过 1e4,会造成内存问题。" + +msgid "Optimized subsetting with key '" +msgstr "优化的子集用键(key) '" + +msgid "Optimized subsetting with index '" +msgstr "优化的子集用索引(index) '" + +msgid "Creating new index '" +msgstr "造成新索引(index) '" + +msgid "Creating index %s done in ..." +msgstr "造成新索引(index) %s 用了 ..." + +msgid "" +"'on' argument should be a named atomic vector of column names indicating " +"which columns in 'i' should be joined with which columns in 'x'." +msgstr "" +"'on' 参数应为一个有子项名字的原子列名向量,指明'i' 中的哪些列应与 'x' 中的哪" +"些列联接。" + +msgid "Found more than one operator in one 'on' statement:" +msgstr "在一个 'on' 语句中出现了多于一个的操作符(operator):" + +msgid ". Please specify a single operator." +msgstr "。请指定单个操作符。" + +msgid "'on' contains no column name:" +msgstr "'on' 中没有列名:" + +msgid ". Each 'on' clause must contain one or two column names." +msgstr "。每个'on' 子句必须包含一个或两个列名。" + +msgid "'on' contains more than 2 column names:" +msgstr "'on' 包含了超过两个列名:" + +msgid "Invalid operators" +msgstr "无效的操作符" + +msgid ". Only allowed operators are" +msgstr "。只有这些操作符是有效的" + +msgid "." +msgstr "." + +msgid "There is no package %s in provided repository." +msgstr "所提供的资料库中不含包%s" + +msgid "" +"Git revision is not available. Most likely data.table was installed from " +"CRAN or local archive.\n" +"Git revision is available when installing from our repositories 'https://" +"Rdatatable.gitlab.io/data.table' and 'https://Rdatatable.github.io/data." +"table'." +msgstr "" +"Git 修订并不存在。可能是因为 data.table 是从 CRAN 或者是本地档案安装。\n" +"Git 修订存在的情况只限于从我们资料库 'https://Rdatatable.gitlab.io/data." +"table' 或者'https://Rdatatable.github.io/data.table'下载。" + +msgid "'fromLast' must be TRUE or FALSE" +msgstr "'fromLast' 必须为 TRUE 或 FALSE" + +msgid "x must be an atomic vector or data.frames/data.tables" +msgstr "x 必须是原子向量或data.frame/data.table" + +msgid "Using '" +msgstr "使用 '" + +msgid "' as value column. Use 'value.var' to override" +msgstr "' 作为 value 列。可使用 'value.var' 修改" + +msgid "The dcast generic in data.table has been passed a" +msgstr "data.table 中的 dcast 泛型函数被传递了" + +msgid "" +", but data.table::dcast currently only has a method for data.tables. Please " +"confirm your input is a data.table, with setDT(" +msgstr "" +",但目前 data.table::dcast 仅提供了针对 data.table 的方法。您可通过如下两种方" +"法确保您的输入为一个 data.table对象,即setDT(" + +msgid ") or as.data.table(" +msgstr ") 或 as.data.table(" + +msgid "" +"). If you intend to use a reshape2::dcast, try installing that package " +"first, but do note that reshape2 is deprecated and you should be migrating " +"your code away from using it." +msgstr "" +")。若您想使用reshape2::dcast,尝试先安装reshape2。但请注意reshape2已经不推荐" +"使用,您应修改您的代码以不再使用它。" + +msgid "" +"and will attempt to redirect to the reshape2::dcast; please note that " +"reshape2 is deprecated, and this redirection is now deprecated as well. " +"Please do this redirection yourself like reshape2::dcast(" +msgstr "" +",将尝试重定向到reshape2::dcast。请注意reshape2已经不推荐使用,故该重定向目前" +"也不推荐使用。请手动执行该重定向,如reshape2::dcast(" + +msgid "). In the next version, this warning will become an error." +msgstr ")。在下一个版本中,此警告将变成为错误。" + +msgid "" +"Invalid formula. Cast formula should be of the form LHS ~ RHS, for e.g., a + " +"b ~ c." +msgstr "无效的公式。所转换的公式的形式应为LHS ~ RHS,如a + b ~ c。" + +msgid "data.table to cast must have unique column names" +msgstr "要转换的data.table必须具有唯一的列名" + +msgid "value.var values [" +msgstr "value.var 的值 [" + +msgid "] are not found in 'data'." +msgstr "] 无法在 'data' 中找到" + +msgid "" +"When 'fun.aggregate' and 'value.var' are both lists, 'value.var' must be " +"either of length =1 or =length(fun.aggregate)." +msgstr "" +"当 'fun.aggregate' 和 'value.var' 同为 list时, 'value.var' 的长度必须为 1 或 " +"length(fun.aggregate)。" + +msgid "'data' must be a data.table." +msgstr "'data' 必须为 data.table" + +msgid "'drop' must be logical TRUE/FALSE" +msgstr "'drop' 必须为逻辑 TRUE/FALSE" + +msgid "Column [" +msgstr "列 [" + +msgid "] not found or of unknown type." +msgstr "] 无法找到或其类型未知。" + +msgid "Columns specified in formula can not be of type list" +msgstr "在formula中指定的列不应为列表类型" + +msgid "Can not cast an empty data.table" +msgstr "无法转换一个空的data.table" + +msgid "Aggregate function missing, defaulting to 'length'" +msgstr "聚合函数缺失,将默认采用'length'" + +msgid "Internal error -- empty rhsnames in dcast; please report" +msgstr "内部错误:dcast 中 rhsnames 为空;请报告" + +msgid "The melt generic in data.table has been passed a" +msgstr "data.table 中的 melt 泛型函数被传递了" + +msgid "" +", but data.table::melt currently only has a method for data.tables. Please " +"confirm your input is a data.table, with setDT(" +msgstr "" +",然而 data.table::melt 当前只支持输入 data.table 对象。请确保输入的是一个 " +"data.table 对象,可以用 setDT(" + +msgid "" +"). If you intend to use a method from reshape2, try installing that package " +"first, but do note that reshape2 is deprecated and you should be migrating " +"your code away from using it." +msgstr "" +")。如果确实要使用 reshape2 中的方法,首先要安装这个包。需要注意,reshape2 已" +"经弃用,你应该将代码迁移并且不再使用它。" + +msgid "" +"and will attempt to redirect to the relevant reshape2 method; please note " +"that reshape2 is deprecated, and this redirection is now deprecated as well. " +"To continue using melt methods from reshape2 while both libraries are " +"attached, e.g. melt.list, you can prepend the namespace like reshape2::melt(" +msgstr "" +"即将转向到 reshape2 中的相关方法;请注意 reshape2 已经弃用,这个转向也已经弃" +"用。如果要在 data.table 和 reshape2 同时附着的情况下继续使用 reshape2 中的 " +"melt 方法,(例如 melt.list),你可以把命名空间写在函数名称前面,例如 " +"reshape2::melt(" + +msgid "Input patterns must be of type character." +msgstr "输入的 patterns 必须是字符类型。" + +msgid "'data' must be a data.table" +msgstr "'data' 必须是一个 data.table" + +msgid "'value.name' provided in both 'measure.vars'" +msgstr "'value.name' 同时出现在了 'measure.vars'" + +msgid "and 'value.name argument'; value provided in" +msgstr "和 'value.name' 参数中;'measure.vars' 中的值" + +msgid "'measure.vars' is given precedence." +msgstr "将被优先使用。" + +msgid "Please provide a name to each element of 'measure.vars'." +msgstr "请为 'measure.vars' 中的每个元素提供一个名称。" + +msgid "" +"Duplicate column names found in molten data.table. Setting unique names " +"using 'make.names'" +msgstr "" +"重复的列名存在于在 molten 之后 data.table。请使用 'make.names' 设置唯一的列" +"名。" + +msgid "" +"y and x must both be data.tables. Use `setDT()` to convert list/data.frames " +"to data.tables by reference or as.data.table() to convert to data.tables by " +"copying." +msgstr "" +"y 和 x 必须都是 data.table 对象。用 `setDT()` 可以把列表/数据框引用转换为 " +"data.table,或者用 as.data.table() 进行复制转换。" + +msgid "maxgap must be a non-negative integer value of length 1" +msgstr "maxgap 必须是一个长度为1的非负整数" + +msgid "minoverlap must be a positive integer value of length 1" +msgstr "minoverlap 必须是一个长度为1的正整数" + +msgid "which must be a logical vector of length 1. Either TRUE/FALSE" +msgstr "which 必须是一个长度为1的逻辑向量(TRUE/FALSE)" + +msgid "nomatch must either be NA or NULL" +msgstr "nomatch 必须是 NA 或 NULL" + +msgid "maxgap and minoverlap arguments are not yet implemented." +msgstr "maxgap 和 minoverlap 参数还未实现。" + +msgid "" +"'y' must be keyed (i.e., sorted, and, marked as sorted). Call setkey(y, ...) " +"first, see ?setkey. Also check the examples in ?foverlaps." +msgstr "" +"'y' 必须有键(key:已经排序并且标记为已排序)。请先用 setkey(y, ...) 设置主" +"键,可以参考 ?setkey 以及 ?foverlaps 中提供的例子。" + +msgid "" +"'by.x' and 'by.y' should contain at least two column names (or numbers) each " +"- corresponding to 'start' and 'end' points of intervals. Please see ?" +"foverlaps and examples for more info." +msgstr "" +"'by.x' 和 'by.y' 每个应当包含至少两个列名(或序号),分别对应区间的起始点 " +"'start' 和 结束点 'end'。请参考 ?foverlaps 以及提供的例子。" + +msgid "" +"Invalid numeric value for 'by.x'; it should be a vector with values 1 <= by." +"x <= length(x)" +msgstr "" +"无效的 'by.x' 数值,应该是一个向量,其中的值满足 1 <= by.x <= length(x)" + +msgid "" +"Invalid numeric value for 'by.y'; it should be a vector with values 1 <= by." +"y <= length(y)" +msgstr "无效的 'by.y' 数值,应当满足 1 <= by.y <= length(y)" + +msgid "A non-empty vector of column names or numbers is required for by.x" +msgstr "'by.x' 必须是一个非空向量,包含列名或者序号" + +msgid "A non-empty vector of column names or numbers is required for by.y" +msgstr "'by.y'应该是具有列名或者数字非空向量" + +msgid "The first" +msgstr "首先" + +msgid "columns of y's key must be identical to the columns specified in by.y." +msgstr "在'by.y'中,y键(key)的列必须与指定的列相同" + +msgid "Elements listed in 'by.x' must be valid names in data.table 'x'" +msgstr "对于data.table中的'X','by.x'中的元素必须是有效名称" + +msgid "" +"Duplicate columns are not allowed in overlap joins. This may change in the " +"future." +msgstr "搭接部分不允许出现重复列。这个要求可能会在未来有所调整。" + +msgid "" +"length(by.x) != length(by.y). Columns specified in by.x should correspond to " +"columns specified in by.y and should be of same lengths." +msgstr "当by.x的长度不等于by.y时。by.x中指定的列应该与by.y中指定的列等长。" + +msgid "y has some duplicated column name(s):" +msgstr "y有重复的列名时:" + +msgid "" +"The last two columns in by.x should correspond to the 'start' and 'end' " +"intervals in data.table 'x' and must be integer/numeric type." +msgstr "" +"'by.x'的最后两列应该与data.table 'x'中的'开始'与'结尾'的间隔对应且必须是整数/" +"数字类型" + +msgid "NA values in data.table 'x' start column: '" +msgstr "在data.table的X的初始列的NA值时:'" + +msgid "" +"'. All rows with NA values in the range columns must be removed for " +"foverlaps() to work." +msgstr "'。必须删除范围列内的具有NA值的行,以(保证)foverlaps()起作用。" + +msgid "NA values in data.table 'x' end column: '" +msgstr "在data.table的'X'的末尾列中NA值时:" + +msgid "All entries in column" +msgstr "列中所有条目" + +msgid "should be <= corresponding entries in column" +msgstr "应该<=列中相应的条目" + +msgid "in data.table 'x'." +msgstr "在data.table的'X'部分" + +msgid "" +"The last two columns in by.y should correspond to the 'start' and 'end' " +"intervals in data.table 'y' and must be integer/numeric type." +msgstr "" +"'by.y'的最后两列应该与data.table 'y'中的'开始'与'结尾'的间隔对应且必须是整数/" +"数字类型" + +msgid "NA values in data.table 'y' start column: '" +msgstr "NA值在data.table的'y'起始列时:" + +msgid "NA values in data.table 'y' end column: '" +msgstr "NA值在data.table的'y'尾列时:" + +msgid "in data.table 'y'." +msgstr "在data.table的'y'部分" + +msgid "" +"Some interval cols are of type POSIXct while others are not. Please ensure " +"all interval cols are (or are not) of POSIXct type" +msgstr "" +"一些间隔列的类型是POSIXct而有些不是。(因此)请确保所有间隔列都是或都不是" +"POSIXct类型" + +msgid "" +"POSIXct interval cols have mixed timezones. Overlaps are performed on the " +"internal numerical representation of POSIXct objects (always in UTC epoch " +"time), therefore printed values may give the impression that values don't " +"overlap but their internal representations do Please ensure that POSIXct " +"type interval cols have identical 'tzone' attributes to avoid confusion." +msgstr "" +"POSIXct间隔列有混合的时区。POSIXct对象(始终以UTC纪元时间为准)以内部数字表现" +"形式展现为重叠,因此显示的值可能(使用户)留下'值是不会重叠,但其内部表现显示" +"显示却重叠'的印象,(所以)请确保POSIXct类型的间隔列具有相同的'时区'属性以避" +"免混乱。" + +msgid "unique() + setkey() operations done in ..." +msgstr "unique() + setkey() 执行用了 ..." + +msgid "binary search(es) done in ..." +msgstr "二进制搜索用了 . . . " + +msgid "Not yet implemented" +msgstr "尚未实现" + +msgid "maxgap > minoverlap. maxgap will have no effect here." +msgstr "最大空隙大于最小重叠,此处的最大空隙无效。" + +msgid "length(na.last) = 0" +msgstr "na.last长度等于0" + +msgid "length(na.last) > 1, only the first element will be used" +msgstr "当na.last长度大于1时,只会使用第一个元素" + +msgid "x is a single vector, non-NULL 'cols' doesn't make sense" +msgstr "x是单个向量,非NULL的'cols'没有意义" + +msgid "x is a list, 'cols' can not be 0-length" +msgstr "x是一个list, 'cols'不能为0长度" + +msgid "Used more than one of the arguments input=, file=, text= and cmd=." +msgstr "使用了超过一个参数, 包括input=, file=, text= 和 cmd=." + +msgid "Argument 'encoding' must be 'unknown', 'UTF-8' or 'Latin-1'." +msgstr "参数 'encoding' 必须为 'unknown', 'UTF-8' 或 'Latin-1'." + +msgid "'text=' is type" +msgstr "'text=' 是类型" + +msgid "but must be character." +msgstr "但必须是字符." + +msgid "" +"input= must be a single character string containing a file name, a system " +"command containing at least one space, a URL starting 'http[s]://', " +"'ftp[s]://' or 'file://', or, the input data itself containing at least one " +"\\n or \\r" +msgstr "" +"input= 必须是以下其中一种字符串: 一个文件名, 一个含有不少于一个空格的系统命" +"令, 以'http[s]://','ftp[s]://' 或 'file://' 开头的URL, 或是本身就包含至少一个" +"\\n 或 \\r的输入数据" + +msgid "" +"input= contains no \\n or \\r, but starts with a space. Please remove the " +"leading space, or use text=, file= or cmd=" +msgstr "" +"input= 不包含 \\n 或 \\r, 但是开头有个空格请移除开头的空格, 或使用text=, " +"file= 或 cmd=" + +msgid "" +"Input URL requires https:// connection for which fread() requires 'curl' " +"package which cannot be found. Please install 'curl' using 'install." +"packages('curl')'." +msgstr "" +"输入的URL要求 https:// 连接. 因而 fread() 要求 'curl' 包.请用 'install." +"packages('curl')' 安装'curl'包." + +msgid "Taking input= as a system command ('" +msgstr "正将 input= 当做系统命令 ('" + +msgid "" +"') and a variable has been used in the expression passed to `input=`. Please " +"use fread(cmd=...). There is a security concern if you are creating an app, " +"and the app could have a malicious user, and the app is not running in a " +"secure environment; e.g. the app is running as root. Please read item 5 in " +"the NEWS file for v1.11.6 for more information and for the option to " +"suppress this message." +msgstr "" +"') 同时一个变量也被传输到 `input=`.请使用fread(cmd=...).这是出于安全考虑. 试" +"想你在开发一个app, 这个app可能有恶意用户, 同时这个app的运行环境不安全 (比如在" +"root环境下运行).请阅读v1.11.6版本的NEWS file里面的item 5获取更多资讯, 或了解" +"如何取消这个提示." + +msgid "File '" +msgstr "文件'" + +msgid "' does not exist or is non-readable. getwd()=='" +msgstr "' 不存在, 或不可读. getwd()=='" + +msgid "' is a directory. Not yet implemented." +msgstr "'是个目录。还没有编程实现。" + +msgid "' has size 0. Returning a NULL" +msgstr "' 的大小为0. 返回一个NULL" + +msgid "data.table" +msgstr "data.table" + +msgid "data.frame" +msgstr "data.frame" + +msgid "" +"To read gz and bz2 files directly, fread() requires 'R.utils' package which " +"cannot be found. Please install 'R.utils' using 'install.packages('R." +"utils')'." +msgstr "" +"想要直接读取 gz 和 bz2 文件, fread() 需要 'R.utils' 包.请用 'install." +"packages('R.utils')'安装 'R.utils' 包." + +msgid "" +"'autostart' is now deprecated and ignored. Consider skip='string' or skip=n" +msgstr "" +"'autostart' 现在已经不再推荐使用且失效, 请考虑用 skip='string' 或 skip=n" + +msgid "" +"colClasses is type 'logical' which is ok if all NA but it has some TRUE or " +"FALSE values in it which is not allowed. Please consider the drop= or " +"select= argument instead. See ?fread." +msgstr "" +"colClasses 只能在全部是NA的情况下为逻辑变量. 请考虑使用 drop= 或 select= . 更" +"多信息请参照 ?fread" + +msgid "colClasses is not type list or character vector" +msgstr "colClasses 不是列表 (list) 或字符向量 (character vector)" + +msgid "" +"colClasses=\"NULL\" (quoted) is interpreted as colClasses=NULL (the default) " +"as opposed to dropping every column." +msgstr "" +"colClasses=\"NULL\" (带引号) 应该被视为 colClasses=NULL (默认情况)而不是弃掉" +"每个列" + +msgid "" +"strip.white==TRUE (default) and \"\" is present in na.strings, so any number " +"of spaces in string columns will already be read as ." +msgstr "" +"na.strings 中包含 strip.white==TRUE (默认情况) 和 \"\", 因此(字符类型的)列中" +"的空格会被当作 ." + +msgid "" +"Since strip.white=TRUE (default), use na.strings=\"\" to specify that any " +"number of spaces in a string column should be read as ." +msgstr "" +"因为 strip.white=TRUE (默认情况), 请使用 na.strings=\"\" 以使得(字符类型的)列" +"中的空格会被当作 ." + +msgid "" +"But strip.white=FALSE. Use strip.white=TRUE (default) together with na." +"strings=\"\" to turn any number of spaces in string columns into " +msgstr "" +"但是 strip.white=FALSE. 请使用 strip.white=TRUE (默认情况), 同时na.strings=" +"\"\", 以使得(字符类型的)列中的空格转成 ." + +msgid "" +"'data.table' relies on the package 'yaml' to parse the file header; please " +"add this to your library with install.packages('yaml') and try again." +msgstr "" +"'data.table' 依赖 'yaml' 包来分析文件头 (header)请使用 install." +"packages('yaml') 来安装然后再重试." + +msgid "" +"Combining a search string as 'skip' and reading a YAML header may not work " +"as expected -- currently," +msgstr "" +"读取一个 YAML 文件头 (header) 的同时以 'skip' 为搜索字符可能会引起异常 -- 目" +"前" + +msgid "" +"reading will proceed to search for 'skip' from the beginning of the file, " +"NOT from the end of" +msgstr "读取会直接从文件的开头搜索 'skip', 而非从元数据 (metadata) " + +msgid "" +"the metadata; please file an issue on GitHub if you'd like to see more " +"intuitive behavior supported." +msgstr "的尾部开始; 如果你希望更直观的功能, 请在 Github 上提交 issue." + +msgid "Encountered <" +msgstr "遇到 <" + +msgid "..." +msgstr "..." + +msgid "> at the first" +msgstr "> 在第一个" + +msgid "unskipped line (" +msgstr "非跳过的行 (" + +msgid "), which does not constitute the start to a valid YAML header" +msgstr "), 它不含符合要求的 YAML header." + +msgid "(expecting something matching regex \"" +msgstr "需要符合正则 (regex) \"" + +msgid "\"); please check your input and try again." +msgstr "\"); 请检查你的输入然后重试." + +msgid "" +"Reached the end of the file before finding a completion to the YAML header. " +"A valid YAML header is bookended by lines matching" +msgstr "" +"到了文件的结尾, 还没发现 YAML header 的完结.一个有效的 YAML header 应该根据行" +"匹配结尾." + +msgid "the regex \"" +msgstr "正则 \"" + +msgid "\". Please double check the input file is a valid csvy." +msgstr "从这里开始" + +msgid "" +"Processed %d lines of YAML metadata with the following top-level fields: %s" +msgstr "处理了YAML元数据中的排列最前的 %d 行: %s" + +msgid "User-supplied 'header' will override that found in metadata." +msgstr "用户提供的'header'将覆盖元数据中的表头" + +msgid "" +"User-supplied column names in 'col.names' will override those found in YAML " +"metadata." +msgstr "用户在“col.names”中提供的列名将覆盖在YAML元数据中找到的列名" + +msgid "" +"colClasses dictated by user input and those read from YAML header are in " +"conflict (specifically, for column" +msgstr "用户输入指定的列类型和从YAML列名中读取的列类型发生冲突(特别是column" + +msgid "s" +msgstr "s" + +msgid "[" +msgstr "[" + +msgid "]); the proceeding assumes the user input was" +msgstr "]); 该过程假定用户输入的是" + +msgid "" +"an intentional override and will ignore the types implied by the YAML " +"header; please exclude" +msgstr "有意覆盖的,因此将忽略YAML表头所指示的列类型;请排除" + +msgid "these columns" +msgstr "这些列" + +msgid "this column from colClasses if this was unintentional." +msgstr "如果不想覆盖,请将这些列从colClasses中排除" + +msgid "User-supplied 'sep' will override that found in metadata." +msgstr "用户提供的“sep”将覆盖元数据中的分隔符" + +msgid "User-supplied 'quote' will override that found in metadata." +msgstr "用户提供的“quote”将覆盖元数据中的引号" + +msgid "User-supplied 'dec' will override that found in metadata." +msgstr "用户提供的“dec”将覆盖元数据中的小数点分隔符" + +msgid "User-supplied 'na.strings' will override that found in metadata." +msgstr "用户提供的“na.strings”将覆盖元数据中对默认值的预处理" + +msgid "Column '" +msgstr "列" + +msgid "' was requested to be '" +msgstr "被要求为" + +msgid "' but fread encountered the following" +msgstr "但是fread遇到了以下问题" + +msgid "error" +msgstr "错误" + +msgid "warning" +msgstr "警告" + +msgid ":" +msgstr ":" + +msgid "so the column has been left as type '" +msgstr "所以该列已经被保存为类型" + +msgid "stringsAsFactors=%s converted %d column(s): %s" +msgstr "stringsAsFactors=%s 改变 %d 列: %s" + +msgid "" +"key argument of data.table() must be a character vector naming columns (NB: " +"col.names are applied before this)" +msgstr "" +"data.table()的key参数必须是字符向量命名的列(NB:col.names在这之前被使用过)" + +msgid "" +"index argument of data.table() must be a character vector naming columns " +"(NB: col.names are applied before this)" +msgstr "" +"data.table()的index参数必须是字符向量命名的列(NB:参数col.names在这之前被使用" +"过)" + +msgid "dateTimeAs must be a single string" +msgstr "dataTimeAs 必须是单个字符串" + +msgid "dateTimeAs must be 'ISO','squash','epoch' or 'write.csv'" +msgstr "dateTimeAs 必须是 'ISO','squash','epoch' 或 'write.csv'" + +msgid "logicalAsInt has been renamed logical01. Use logical01 only, not both." +msgstr "" +"logicalAsInt 已重命名为 logical01。不要同时使用它们,仅使用 logical01。" + +msgid "x being coerced from class: matrix to data.table" +msgstr "x 的类将强制从 matrix 转变为 data.table" + +msgid "Appending to existing file so setting bom=FALSE and yaml=FALSE" +msgstr "并入了已存在的文件,所以设置 bom=FALSE 和 yaml=FALSE" + +msgid "Input has no columns; doing nothing." +msgstr "输入没有列,不执行任何操作。" + +msgid "If you intended to overwrite the file at" +msgstr "如果你打算覆盖文件" + +msgid "with an empty one, please use file.remove first." +msgstr "为空文件,请先使用 file.remove。" + +msgid "Input has no columns; creating an empty file at '" +msgstr "输入没有列,将创建一个空文件 '" + +msgid "' and exiting." +msgstr "' 并退出。" + +msgid "" +"'data.table' relies on the package 'yaml' to write the file header; please " +"add this to your library with install.packages('yaml') and try again." +msgstr "" +"'data.table' 依赖于 'yaml' 包来写文件头;请运行 install.packages('yaml') 安" +"装 'yaml' 包后再试。" + +msgid "Argument 'x' must be a data.table object" +msgstr "'x' 参数必须是一个 data.table 对象" + +msgid "" +"Argument 'by' must be a character vector of column names used in grouping." +msgstr "'by' 参数必须是一个字符向量,向量的元素是列名,用于分组。" + +msgid "Argument 'id' must be a logical scalar." +msgstr "'id' 参数必须是一个逻辑标量。" + +msgid "" +"Argument 'x' is a 0-column data.table; no measure to apply grouping over." +msgstr "'x' 参数是一个 0 列的 data.table;无法对其应用分组。" + +msgid "Input data.table must not contain duplicate column names." +msgstr "作为输入的 data.table 对象不能含有重复的列名。" + +msgid "Argument 'by' must have unique column names for grouping." +msgstr "'by' 参数用于分组,不可包含重复列名。" + +msgid "Argument 'sets' must be a list of character vectors." +msgstr "'sets' 参数必须是一个字符向量的列表。" + +msgid "" +"All columns used in 'sets' argument must be in 'by' too. Columns used in " +"'sets' but not present in 'by':" +msgstr "" +"在 'sets' 参数中应用的所有列也必须在 'by' 中。当前 'sets' 包含而 'by' 中不含" +"的列有:" + +msgid "" +"When using `id=TRUE` the 'x' data.table must not have a column named " +"'grouping'." +msgstr "当使用 `id=TRUE` 时,data.table 'x' 不能包含名为 'grouping' 的列。" + +msgid "" +"Character vectors in 'sets' list must not have duplicated column names " +"within a single grouping set." +msgstr "在单个分组中,'sets' 列表中的字符串向量不能有重复的列名。" + +msgid "" +"'sets' contains a duplicate (i.e., equivalent up to sorting) element at index" +msgstr "'sets' 的索引含有重复的元素,在做排序时的作用是对等的" + +msgid "" +"; as such, there will be duplicate rows in the output -- note that grouping " +"by A,B and B,A will produce the same aggregations. Use " +"`sets=unique(lapply(sets, sort))` to eliminate duplicates." +msgstr "" +";同样的,输出中也会包含重复的行(注意按照A、B分组与按照B、A分组的结果是一样" +"的。)使用 `sets=unique(lapply(sets, sort))` 来消除重复。" + +msgid "" +"Expression passed to grouping sets function must not update by reference. " +"Use ':=' on results of your grouping function." +msgstr "" +"传递给分组相关函数的表达式不能通过引用更新。请在你的分组函数返回的结果中使用 " +"':=' 。" + +msgid "" +"When using `id=TRUE` the 'j' expression must not evaluate to a column named " +"'grouping'." +msgstr "当 `id=TRUE` 时,'j' 表达式不能针对 'grouping' 列求值。" + +msgid "" +"There exists duplicated column names in the results, ensure the column " +"passed/evaluated in `j` and those in `by` are not overlapping." +msgstr "结果中存在重复的列名,请确保 `j` 和 `by` 传递的列中没有发生重叠。" + +msgid "" +"Using integer64 class columns require to have 'bit64' package installed." +msgstr "要在列中使用 integer64 类,需要先安装 'bit64' 包。" + +msgid "%s: using %s: %s" +msgstr "%s: 用 %s: %s" + +msgid "" +"'xts' class passed to %s function but 'xts' is not available, you should " +"have 'xts' installed already" +msgstr "'xts'类对象传递给了%s方程,但是'xts'包不可用。您应首先安装'xts'包" + +msgid "Argument 'sort' should be logical TRUE/FALSE" +msgstr "参数 'sort' 应为逻辑值 TRUE 或 FALSE" + +msgid "Argument 'no.dups' should be logical TRUE/FALSE" +msgstr "参数 'no.dups' 应为逻辑值 TRUE 或 FALSE" + +msgid "You are trying to join data.tables where" +msgstr "你正在试图去联结data.table,其中" + +msgid "'x' and 'y' arguments are" +msgstr "参数'x'和'y'是" + +msgid "'x' argument is" +msgstr "参数'x'的值为" + +msgid "'y' argument is" +msgstr "参数'y'的值为" + +msgid "0 columns data.table." +msgstr "0列的data.table对象。" + +msgid "`by.x` and `by.y` must be of same length." +msgstr "`by.x`和`by.y`必须是相同的长度。" + +msgid "Supplied both `by` and `by.x/by.y`. `by` argument will be ignored." +msgstr "参数`by`和`by.x/by.y`都提供了值。参数`by`的值会被忽略。" + +msgid "A non-empty vector of column names is required for `by.x` and `by.y`." +msgstr "`by.x`和`by.y`必须是非空的列名。" + +msgid "Elements listed in `by.x` must be valid column names in x." +msgstr "`by.x`中的列名必须是x的有效列。" + +msgid "Elements listed in `by.y` must be valid column names in y." +msgstr "`by.y`中的列名必须是y的有效列。" + +msgid "A non-empty vector of column names for `by` is required." +msgstr "`by`必须是非空的列名。" + +msgid "Elements listed in `by` must be valid column names in x and y" +msgstr "`by`中的列名必须是x和y的有效列" + +msgid "column names" +msgstr "列名" + +msgid "are duplicated in the result" +msgstr "在结果中是重复的" + +msgid "IN DEVELOPMENT built" +msgstr "在开发版本中" + +msgid "using" +msgstr "使用" + +msgid "threads (see ?getDTthreads). Latest news: r-datatable.com" +msgstr "线程(请参阅?getDTthreads)。最新的消息:r-datatable.com" + +msgid "TRANSLATION CHECK" +msgstr "翻译检查" + +msgid "" +"**********\n" +"Running data.table in English; package support is available in English only. " +"When searching for online help, be sure to also check for the English error " +"message. This can be obtained by looking at the po/R-.po and po/" +".po files in the package source, where the native language and " +"English error messages can be found side-by-side\n" +"**********" +msgstr "" +"**********\n" +"用中文执行data.table。软件包只提供英语支持。当在在线搜索帮助时,也要确保检查" +"英语错误信息。这个可以通过查看软件包源文件中的po/R-zh_CN.po和po/zh_CN.po文件" +"获得,这个文件可以并排找到母语和英语错误信息。\n" +"**********" + +msgid "" +"**********\n" +"This development version of data.table was built more than 4 weeks ago. " +"Please update: data.table::update.dev.pkg()\n" +"**********" +msgstr "" +"**********这个data.table的开发版本是在4个多星期之前构建的。请更新版本:data." +"table::update.dev.pkg()\n" +"**********" + +msgid "**********" +msgstr "**********" + +msgid "" +"This installation of data.table has not detected OpenMP support. It should " +"still work but in single-threaded mode." +msgstr "" +"data.table的安装未检测到OpenMP支持。在单线程模式下应该仍能运行" + +msgid "sysname" +msgstr "sysname" + +msgid "Darwin" +msgstr "Darwin" + +msgid "" +"This is a Mac. Please read https://mac.r-project.org/openmp/. Please engage " +"with Apple and ask them for support. Check r-datatable.com for updates, and " +"our Mac instructions here: https://github.com/Rdatatable/data.table/wiki/" +"Installation. After several years of many reports of installation problems " +"on Mac, it's time to gingerly point out that there have been no similar " +"problems on Windows or Linux." +msgstr "" +"此设备为 Mac。请阅读 https://mac.r-project.org/openmp/。请" +"与 Apple 公司联系以获取支持。查看 r-datatable.com 以获取更新,并" +"参阅我们的 Mac 设备说明:https://github.com/Rdatatable/data.table/wiki/Installation" +"在 Mac 上出现相关安装问题的报告已数年之久," +"需要指出的是在 Windows 或 Linux 平台上一般不存在类似问题。" + +msgid "This is" +msgstr "这是" + +msgid "" +". This warning should not normally occur on Windows or Linux where OpenMP is " +"turned on by data.table's configure script by passing -fopenmp to the " +"compiler. If you see this warning on Windows or Linux, please file a GitHub " +"issue." +msgstr "" +"。此警告一般不应出现在 Windows 或 Linux 平台中,因为" +"data.table 的 configure 脚本中已通过向编译器传递 -fopenmp 参数启用了 OpenMP。" +"如果你在 Windows 或 Linux 平台中发现此警告,请在 GitHub 中提交 issue。" + +msgid "" +"The option 'datatable.nomatch' is being used and is not set to the default " +"NA. This option is still honored for now but will be deprecated in future. " +"Please see NEWS for 1.12.4 for detailed information and motivation. To " +"specify inner join, please specify `nomatch=NULL` explicitly in your calls " +"rather than changing the default using this option." +msgstr "" +"这个选项'datatable.nomatch'正在被使用,没有被设置为默认值NA。该选项目前仍被使" +"用,但在未来不会被使用。相关的详细信息和动机,请参阅1.12.4的信息。要指定内部" +"连接,请在调用中明确指定`nomatch = NULL`,而不要使用此选项更改默认值。" + +msgid "" +"The datatable.%s version (%s) does not match the package (%s). Please close " +"all R sessions to release the old %s and reinstall data.table in a fresh R " +"session. The root cause is that R's package installer can in some " +"unconfirmed circumstances leave a package in a state that is apparently " +"functional but where new R code is calling old C code silently: https://bugs." +"r-project.org/bugzilla/show_bug.cgi?id=17478. Once a package is in this " +"mismatch state it may produce wrong results silently until you next upgrade " +"the package. Please help by adding precise circumstances to 17478 to move " +"the status to confirmed. This mismatch between R and C code can happen with " +"any package not just data.table. It is just that data.table has added this " +"check." +msgstr "" +"data.table.%s版本(%s)和包不匹配版本(%s)。请关闭所有R会话以释放旧%s并在全新的R" +"会话中重新安装data.table。根本原因是R包安装程序可能在某些未经确认的条件下将包" +"置于显然可以正常工作的状态,但是新的R代码正在默默地调用旧的C代码:https://" +"bugs.r-project.org/bugzilla/show_bug.cgi?id=17478。一旦安装包处于这不匹配的状" +"态下,在您下次升级程序包之前,它可能会默默地产生错误的结果请提交具体的情况至" +"17478协助我们确认这个Bug。R和C代码之间的这种不匹配可能发生在任何包中,而不仅" +"仅是在data.table中。只是data.table添加了这个检查" + +msgid "This is R" +msgstr "这是R" + +msgid "but data.table has been installed using R" +msgstr "但是data.table安装在R" + +msgid ". The major version must match. Please reinstall data.table." +msgstr "。主要的版本必须匹配。 请重新安装data.table" + +msgid "" +"Option 'datatable.old.bywithoutby' has been removed as warned for 2 years. " +"It is now ignored. Please use by=.EACHI instead and stop using this option." +msgstr "" +"选项'datatable.old.bywithoutby'已经被移除,警告了2年。它现在被忽略。 请改用" +"by = .EACHI,然后停止使用这个选项。" + +msgid "" +"Option 'datatable.old.unique.by.key' has been removed as warned for 4 years. " +"It is now ignored. Please use by=key(DT) instead and stop using this option." +msgstr "" +"选项'datatable.old.bywithoutby'已经被移除,警告了2年。它现在被忽略。 请改用" +"by = .EACHI,然后停止使用这个选项。" + +msgid "Unexpected base R behaviour: list(x) has copied x" +msgstr "意外的base R行为:list(x)已经复制了x" + +msgid "Unexpected base R behaviour: names<- has copied column contents" +msgstr "意外的base R行为:names<- 已复制列内容" + +msgid "" +"Unexpected base R behaviour: DF[2,2]<- did not copy column 2 which was " +"assigned to" +msgstr "意外的base R行为:DF[2,2]<- 没有复制第二列它被分配给" + +msgid "" +"Unexpected base R behaviour: DF[2,2]<- copied the first column which was not " +"assigned to, too" +msgstr "意外的base R行为:DF[2,2]<-复制了第一列的内容,它也没有被分配给" + +msgid "Unexpected base R behaviour: DF[2,2]<- has not copied address(DF)" +msgstr "意外的base R行为:DF[2,2]<- 还没有复制address(DF)" + +msgid "" +"Reminder to data.table developers: don't use getRversion() internally. Add a " +"behaviour test to .onLoad instead." +msgstr "" +"提醒data.table开发人员:请勿在内部使用getRversion()。将行为测试添加到.onLoad" + +msgid "Provide either threads= or percent= but not both" +msgstr "提供threads=或percent=,但不能两者都提供" + +msgid "percent= is provided but is length" +msgstr "提供了percent =,但为长度" + +msgid "percent==" +msgstr "percent==" + +msgid "but should be a number between 2 and 100" +msgstr "但应为2到100之间的数字" + +msgid "Valid options for col.names are 'auto', 'top', and 'none'" +msgstr "对col.names有效的参数为'auto', 'top', and 'none'" + +msgid "Column classes will be suppressed when col.names is 'none'" +msgstr "当col.names为'none'时,列的类型将被抑制" + +msgid "Key: <%s>" +msgstr "键(key): <%s>" + +msgid "Null data.%s (0 rows and 0 cols)" +msgstr "NULL data.%s (0行,0列)" + +msgid "Empty data.%s (%d rows and %d cols)" +msgstr "空的 data.%s (%d行,%d列)" + +msgid "" +"Internal structure doesn't seem to be a list. Possibly corrupt data.table." +msgstr "内部类型可能不是一个列表,该操作可能会损坏data.table" + +msgid "" +"x may no longer be the character name of the data.table. The possibility was " +"undocumented and has been removed." +msgstr "x可能不再是data.table的名字。 该变化不被记录并且已经被删除" + +msgid "" +"key(x)<-value is deprecated and not supported. Please change to use setkey() " +"with perhaps copy(). Has been warning since 2012 and will be an error in " +"future." +msgstr "" +"key(x)<-value 已经废弃,不再支持。请使用setkey(), 也许您需要配套使用copy()自" +"2012年来就警告将弃用原用法,将来该用法将报错" + +msgid "x is not a data.table" +msgstr "x不是一个data.table" + +msgid "" +"cols is not a character vector. Please see further information in ?setkey." +msgstr "列不是一个字符类型的向量. 更多信息请查看?setkey." + +msgid "" +"Setting a physical key on .SD is reserved for possible future use; to modify " +"the original data's order by group. Try setindex() instead. Or, set*(copy(." +"SD)) as a (slow) last resort." +msgstr "" +"在.SD设置一个物理的键(key)的功能被保留,以备未来的需求; 如需通过分组修改原数" +"据顺序请使用setindex(), 或者set*(copy(.SD))作为最终(该方式缓慢)的方法" + +msgid "" +"cols is a character vector of zero length. Removed the key, but use NULL " +"instead, or wrap with suppressWarnings() to avoid this warning." +msgstr "" +"列为一个长度为0的字符串向量,请删除键值并使用NULL, 或者使用suppressWarnings()" +"来避免警告" + +msgid "cols is the empty string. Use NULL to remove the key." +msgstr "列为一个空字符串,请使用NULL以删除键(key)值。" + +msgid "cols contains some blanks." +msgstr "列中包含空白" + +msgid "some columns are not in the data.table:" +msgstr "一些列不在data.table中" + +msgid "" +"x contains a column called '.xi'. Conflicts with internal use by data.table." +msgstr "x包含一个叫做'.xi'的列。这与data.table中使用的内部名称冲突" + +msgid "' is type '" +msgstr "是类型" + +msgid "' which is not supported as a key column type, currently." +msgstr "目前不是一种被支持的键(key)列类型" + +msgid "" +"Internal error. 'cols' should be character at this point in setkey; please " +"report." +msgstr "内部错误: 目前在setkey中,'cols'应该是字符类型, 请报告" + +msgid "forder took" +msgstr "forder 用了" + +msgid "setkey on columns %s using existing index '%s'" +msgstr "setkey到列%s用现有索引(index) '%s'" + +msgid "reorder took" +msgstr "reorder 用了" + +msgid "x is already ordered by these columns, no need to call reorder" +msgstr "x 已根据这些列进行了排序,无需调用 reorder" + +msgid "Internal error: index '" +msgstr "内部错误:索引(index) '" + +msgid "' exists but is invalid" +msgstr "存在但无效" + +msgid "x is vector but 'by' is supplied" +msgstr "x是一个向量, 但是参数'by'被提供" + +msgid "x is a single vector, non-NULL 'by' doesn't make sense" +msgstr "x是一个单向量,非NULL的'by'参数不合理" + +msgid "Attempting to order a 0-column data.table or data.frame." +msgstr "你正在试图对一个0列的data.table或者data.frame排序" + +msgid "" +"The first item passed to [f]order is a plain list but there are more items. " +"It should be a data.table or data.frame." +msgstr "" +"传递给[f]order的第一个变量是一个简单的列表, 但此处有更多的项它需要是一个data." +"table或者data.frame" + +msgid "Internal code should not be being called on type double" +msgstr "内部代码不应被调用给双精度类型" + +msgid "" +"Input is not a vector of type double. New parallel sort has only been done " +"for double vectors so far. Using one thread." +msgstr "" +"输入一个并非双精度类型的向量。目前新的并行排序方法仅可应用于双精确度向量。将" +"使用单线程进行计算" + +msgid "" +"New parallel sort has not been implemented for decreasing=TRUE so far. Using " +"one thread." +msgstr "" +"目前新的并行排序方法尚无法在decreasing=TRUE的条件下使用。将使用单线程进行计" +"算。" + +msgid "" +"New parallel sort has not been implemented for vectors containing NA values " +"so far. Using one thread." +msgstr "目前新的并行排序方法尚无法用于包含缺失值的向量。将使用单线程。" + +msgid "x must be a data.frame or data.table" +msgstr "x 必须为 data.frame 或 data.table" + +msgid "na.last must be logical TRUE/FALSE" +msgstr "na.last 必须为逻辑 TRUE/FALSE" + +msgid "" +"cols is not a character vector. Please see further information in ?setorder." +msgstr "cols并非一个字符向量。请参考 ?setorder以获得更多信息。" + +msgid "" +"cols is a character vector of zero length. Use NULL instead, or wrap with " +"suppressWarnings() to avoid this warning." +msgstr "" +"cols为一长度为零的字符向量。请使用NULL代替,或将本函数使用suppressWarnings()" +"包裹以阻止该警告。" + +msgid "' which is not supported for ordering currently." +msgstr "',该类型目前尚不支持排序。" + +msgid "'sorted' is TRUE but element" +msgstr "'sorted' 为 TRUE 但元素" + +msgid "is non-atomic, which can't be sorted; try setting sorted = FALSE" +msgstr "并非原子类型,无法排序。请尝试使用 sorted=FALSE" + +msgid "" +"Cross product of elements provided to CJ() would result in %.0f rows which " +"exceeds .Machine$integer.max == %d" +msgstr "CJ()中元素的叉积将产生 %.0f 行,已超过 .Machine$integer.max == %d" + +msgid "x and y must both be data.tables" +msgstr "x 和 y 均需为 data.table" + +msgid "length(by.x) != length(by.y)" +msgstr "length(by.x) != length(by.y)" + +msgid "" +"When x's column ('%s') is character, the corresponding column in y ('%s') " +"should be factor or character, but found incompatible type '%s'." +msgstr "" +"当 x 的列('%s') 是字符,y 中相应的列 ('%s') 应该是因子或字符,然而此类型并不" +"兼容:'%s'." + +msgid "" +"When x's column ('%s') is factor, the corresponding column in y ('%s') " +"should be character or factor, but found incompatible type '%s'." +msgstr "" +"当 x 的列('%s') 是因子, y 中相应的列 ('%s') 应该是字符或因子,然而此类型并不" +"兼容:'%s'." + +msgid "" +"When x's column ('%s') is integer or numeric, the corresponding column in y " +"('%s') can not be character or logical types, but found incompatible type " +"'%s'." +msgstr "" +"当 x 的列('%s') 是整数或数值,y 中相应的列('%s') 不能是字符或逻辑类型,然而此" +"类型不兼容:'%s'." + +msgid "argument 'all' should be logical of length one" +msgstr "参数 'all' 应该是长度为 1 的逻辑型" + +msgid "x and y must have the same column names" +msgstr "x 和 y 的列名必须相同" + +msgid "x and y must have the same column order" +msgstr "x 和 y 的列顺序必须保持一致" + +msgid "unsupported column type" +msgstr "不支持的列类型" + +msgid "found in x or y:" +msgstr "存在于 x 或 y 中" + +msgid "of x is '" +msgstr "对于 x ,是 '" + +msgid "' but the corresponding item of y is '" +msgstr "' 然而 y 中对应的项是:'" + +msgid "None of the datasets should contain a column named '.seqn'" +msgstr "所有的数据集都不应该包含名为 '.seqn' 的列" + +msgid "Internal error: ncol(current)==ncol(target) was checked above" +msgstr "内部错误:ncol(current)==ncol(target) 之前已经检查" + +msgid "None of the datasets to compare should contain a column named '.seqn'" +msgstr "所有参与比较的数据集都不应该包含名为 '.seqn' 的列" + +msgid "" +"Datasets to compare with 'ignore.row.order' must not have unsupported column " +"types:" +msgstr "与 'ignore.row.order' 进行比较的数据集,不能存在不支持的列类型:" + +msgid "" +"Argument 'tolerance' was forced to lowest accepted value `sqrt(.Machine" +"$double.eps)` from provided" +msgstr "" +"参数 'tolerance' 被强制设定为最低接受值 `sqrt(.Machine$double.eps)`,此值来自" +"于:" + +msgid "" +"Duplicate rows in datasets, numeric columns and ignore.row.order cannot be " +"used with non 0 tolerance argument" +msgstr "" +"数据集中的重复行、数字列和 ignore.row.order 都不能与非 0 的容差(tolerance)" +"参数同时使用" + +msgid "" +"Factor columns and ignore.row.order cannot be used with non 0 tolerance " +"argument" +msgstr "因子列和 ignore.row.order 都不能与非 0 的容差(tolerance)参数同时使用" + +msgid "Internal error: factor type mismatch should have been caught earlier" +msgstr "内部错误:此时不匹配的因子类型应已被发现" + +msgid "argument 'fill' ignored, only make sense for type='const'" +msgstr "参数 'fill' 将被忽略,因其仅当 type='const'时有意义" + +msgid "No objects of class data.table exist in %s" +msgstr "%s中没有 data.table类型的对象" + +msgid "order.col='" +msgstr "order.col='" + +msgid "' not a column name of info" +msgstr "' 并非info的一个列名" + +msgid "Total:" +msgstr "共计:" + +msgid "data.table package is loaded. Unload or start a fresh R session." +msgstr "data.table 包已被加载。请将其卸载或启动一个新的 R 会话。" + +msgid "" +"script must end with '.Rraw'. If a file ending '.Rraw.bz2' exists, that will " +"be found and used." +msgstr "" +"脚本文件名必须以 '.Rraw' 结尾。如果以 'Rraw.bz2' 结尾的文件存在,其也将被使" +"用。" + +msgid "Neither %s nor %s exist in %s" +msgstr "%3$s 中 %1$s 也 %2$s 不存在" + +msgid "test.data.table() running:" +msgstr "test.data.table() 执行:" + +msgid "" +"**** This R session's language is not English. Each test will still check " +"that the correct number of errors and/or\n" +"**** warnings are produced. However, to test the text of each error/warning " +"too, please restart R with LANGUAGE=en" +msgstr "" +"**** 此 R 会话的语言并非英文。每个测试仍将检查生成的警告或错误的个数是否正" +"确。**** 然而,若需同时测试警告和错误的文本内容,请用 LANGUAGE=en 重新启动 " +"R。" + +msgid "Failed after test" +msgstr "错误出现于测试" + +msgid "before the next test() call in" +msgstr "后,先于下一调用test()于" + +msgid "Timings count mismatch:" +msgstr "计时不一致:" + +msgid "vs" +msgstr "vs" + +msgid "10 longest running tests took" +msgstr "最慢10个测试用了" + +msgid "All %d tests in %s completed ok in %s" +msgstr "%2$s中每%1$d个测试在%3$s结束了ok" + +msgid "Running test id %s" +msgstr "执行测试 id %s" + +msgid "Test" +msgstr "测试" + +msgid "" +"is invalid: when error= is provided it does not make sense to pass y as well" +msgstr "无效:当使用了error=,不应再输入y" + +msgid "Test id %s is not in increasing order" +msgstr "测试标识符 %s 不是递增的顺序" + +msgid "Test %s produced %d %ss but expected %d" +msgstr "测试 %s 生成了%d %ss 但预计生成 %d" + +msgid "" +"Test %s didn't produce the correct %s:\n" +"Expected: %s\n" +"Observed: %s" +msgstr "" +"测试 %s 没有生成正确的 %s:\n" +"预计生成:%s\n" +" 实际生成:%s " + +msgid "Output captured before unexpected warning/error/message:" +msgstr "在意外的警告/错误/提示之前,输入已被记录:" + +msgid "" +"Test %s did not produce the correct output:\n" +"Expected: <<%s>>\n" +"Observed <<%s>>" +msgstr "" +"测试 %s 没有生成正确的输入: \n" +"预计生成: <<%s>>\n" +"实际生成:<<%s>>" + +msgid "" +"Test %s produced output but should not have:\n" +"Expected absent (case insensitive): <<%s>>\n" +"Observed: <<%s>>" +msgstr "" +"测试 %s 生成输出但是不应当出现以下:\n" +"预计不存在(不区分大小写): <<%s>>\n" +"实际生成:<<%s>>" + +msgid "Test %s ran without errors but selfrefok(%s) is FALSE" +msgstr "测试 %s 可以无报错运行但是 selfrefok(%s) 是否:" + +msgid "Test %s ran without errors but failed check that x equals y:" +msgstr "测试 %s 可以无报错运行但是在检查 x 与 y 相同时候有报错:" + +msgid "First %d of %d (type '%s'):" +msgstr "第%d之%d (类型 '%s'):" + +msgid "Use started.at=proc.time() not Sys.time() (POSIXt and slow)" +msgstr "使用started.at=proc.time()而非Sys.time() (返回POSIXt类型,处理较慢)" + +msgid "make.names='" +msgstr "make.names='" + +msgid "' not found in names of input" +msgstr "'不存在于输入的名字里" + +msgid "make.names=" +msgstr "make.names=" + +msgid "is out of range [1,ncol=" +msgstr "不在以下区间[1,ncol=" + +msgid "'names' must be TRUE/FALSE or a character vector." +msgstr "'names'必须为TRUE/FALSE,或一个字符(character)向量。" + +msgid "'keep' should contain integer values between" +msgstr "'keep'所含整数值应在区间" + +msgid "length(names) (=" +msgstr "length(names) (=" + +msgid ") is not equal to length(" +msgstr ") 并不等于(=" + +msgid ") (=" +msgstr ") (=" + +msgid ")." +msgstr ")." + +msgid "l not type list" +msgstr "l并非列表(list)类型" + +msgid "Argument 'nan' must be length 1" +msgstr "参数 'nan' 的长度必须为 1" + +msgid "Argument 'nan' must be NA or NaN" +msgstr "参数 'nan' 必须为 NA 或 NaN" + +msgid "x not boolean" +msgstr "x并非布尔值" + +msgid "" +"Some columns are type 'integer64' but package bit64 is not installed. Those " +"columns will print as strange looking floating point data. There is no need " +"to reload the data. Simply install.packages('bit64') to obtain the integer64 " +"print method and print the data again." +msgstr "" +"有些列的类型是64 位整数类型('integer64')但bit64包并没有安装。这些列会被显示" +"成看起来有些奇怪的浮点型数据。然而并不需要重新载入这些数据,只需运行 install." +"packages('bit64') 来获取显示integer64类型的打印方法,再重新打印该数据即可。" + +msgid "Pattern" +msgstr "Pattern" + +msgid "not found: [" +msgstr "未找到: [" + +msgid "keep.rownames must be length 1" +msgstr "keep.rownames 的长度必须为 1" + +msgid "keep.rownames must not be NA" +msgstr "keep.rownames 不可为 NA" + +msgid "" +"Input xts object should not have '%s' column because it would result in " +"duplicate column names. Rename '%s' column in xts or use `keep.rownames` to " +"change the index column name." +msgstr "" +"输入的xts对象不能含有'%s'列,因这会导致出现重复的列名。请尝试重新命名xts中" +"的'%s'列或者使用`keep.rownames`并手动添加index为另外的列" + +msgid "" +"data.table must have a time based column in first position, use " +"`setcolorder` function to change the order, or see ?timeBased for supported " +"types" +msgstr "" +"data.table的首列必须为一个以时间为基础的列,请使用`setcolorder`方程来改变它的" +"顺序,或者通过?timeBased来查看支持的类型" + +msgid "Following columns are not numeric and will be omitted:" +msgstr "以下的列并非数值类型,将被忽略:" + +msgid "Index: " +msgid_plural "Indices: " +msgstr[0] "索引(index): " + +msgid "%d variable not shown: %s\n" +msgid_plural "%d variables not shown: %s\n" +msgstr[0] "%d变量没显示: %s\n" + +msgid "%d error out of %d. Search %s for test number %s" +msgid_plural "%d errors out of %d. Search %s for test numbers %s" +msgstr[0] "%d错误总数为%d. %s中搜索测试编号%s" + +#~ msgid "'target' and 'current' must both be data.tables" +#~ msgstr "'target' 和 'current' 都必须是 data.table" diff --git a/po/data.table.pot b/po/data.table.pot index 5b6637b73b..cea9c55a58 100644 --- a/po/data.table.pot +++ b/po/data.table.pot @@ -8,11 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: data.table 1.13.1\n" "Report-Msgid-Bugs-To: \n" -<<<<<<< HEAD -"POT-Creation-Date: 2020-03-13 11:05+0800\n" -======= "POT-Creation-Date: 2020-10-17 13:11-0400\n" ->>>>>>> master "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -44,12 +40,11 @@ msgid "" msgstr "" #: assign.c:124 -msgid "Internal error: .internal.selfref ptr is neither NULL nor R_NilValue" +msgid "Internal error: .internal.selfref ptr is not NULL or R_NilValue" msgstr "" #: assign.c:126 -msgid "" -"Internal error: .internal.selfref tag is neither NULL nor a character vector" +msgid "Internal error: .internal.selfref tag isn't NULL or a character vector" msgstr "" #: assign.c:180 @@ -70,11 +65,7 @@ msgid "" "traceback() to data.table issue tracker." msgstr "" -<<<<<<< HEAD -#: assign.c:205 assign.c:304 -======= #: assign.c:217 ->>>>>>> master #, c-format msgid "Internal error: length of names (%d) is not length of dt (%d)" msgstr "" @@ -131,17 +122,8 @@ msgstr "" msgid "getOption('datatable.alloc')==%d. It must be >=0 and not NA." msgstr "" -<<<<<<< HEAD -#: assign.c:239 between.c:16 between.c:22 forder.c:467 forder.c:470 frollR.c:50 -#: frollR.c:104 fsort.c:109 gsumm.c:342 gsumm.c:577 gsumm.c:686 gsumm.c:805 -#: gsumm.c:950 gsumm.c:1261 gsumm.c:1402 nafill.c:182 openmp-utils.c:67 -#: uniqlist.c:350 utils.c:101 -#, c-format -msgid "%s must be TRUE or FALSE" -======= #: assign.c:251 fsort.c:109 msgid "verbose must be TRUE or FALSE" ->>>>>>> master msgstr "" #: assign.c:299 @@ -167,16 +149,12 @@ msgstr "" msgid "dt passed to assign has no names" msgstr "" -<<<<<<< HEAD -#: assign.c:306 -======= #: assign.c:316 #, c-format msgid "Internal error in assign: length of names (%d) is not length of dt (%d)" msgstr "" #: assign.c:318 ->>>>>>> master msgid "" "data.table is NULL; malformed. A null data.table should be an empty list. " "typeof() should always return 'list' for data.table." @@ -201,13 +179,9 @@ msgid "" "loop if possible for efficiency." msgstr "" -<<<<<<< HEAD -#: assign.c:329 subset.c:144 -======= #: assign.c:341 ->>>>>>> master #, c-format -msgid "i[%d] is %d which is out of range [1,nrow=%d]" +msgid "i[%d] is %d which is out of range [1,nrow=%d]." msgstr "" #: assign.c:344 @@ -436,9 +410,6 @@ msgstr "" msgid "Shortening index '%s' to '%s' due to an update on a key column\n" msgstr "" -<<<<<<< HEAD -#: assign.c:683 -======= #: assign.c:650 #, c-format msgid "" @@ -447,251 +418,143 @@ msgid "" msgstr "" #: assign.c:688 ->>>>>>> master #, c-format msgid "" "Internal error memrecycle: sourceStart=%d sourceLen=%d length(source)=%d" msgstr "" -<<<<<<< HEAD -#: assign.c:685 -======= #: assign.c:690 ->>>>>>> master #, c-format msgid "Internal error memrecycle: start=%d len=%d length(target)=%d" msgstr "" -<<<<<<< HEAD -#: assign.c:688 -======= #: assign.c:693 ->>>>>>> master #, c-format msgid "Internal error: recycle length error not caught earlier. slen=%d len=%d" msgstr "" -<<<<<<< HEAD -#: assign.c:692 -msgid "Internal error: memrecycle has received NULL colname" -msgstr "" - -#: assign.c:718 -======= #: assign.c:697 msgid "Internal error: memrecycle has received NULL colname" msgstr "" #: assign.c:706 ->>>>>>> master #, c-format msgid "" "Cannot assign 'factor' to '%s'. Factors can only be assigned to factor, " "character or list columns." msgstr "" -<<<<<<< HEAD -#: assign.c:732 -======= #: assign.c:720 ->>>>>>> master #, c-format msgid "" "Assigning factor numbers to column %d named '%s'. But %d is outside the " "level range [1,%d]" msgstr "" -<<<<<<< HEAD -#: assign.c:740 -======= #: assign.c:728 ->>>>>>> master #, c-format msgid "" "Assigning factor numbers to column %d named '%s'. But %f is outside the " "level range [1,%d], or is not a whole number." msgstr "" -<<<<<<< HEAD -#: assign.c:746 -======= #: assign.c:734 ->>>>>>> master #, c-format msgid "" "Cannot assign '%s' to 'factor'. Factor columns can be assigned factor, " "character, NA in any type, or level numbers." msgstr "" -<<<<<<< HEAD -#: assign.c:767 -======= #: assign.c:755 ->>>>>>> master msgid "" "Internal error: levels of target are either not unique or have truelength<0" msgstr "" -<<<<<<< HEAD -#: assign.c:806 -======= #: assign.c:794 ->>>>>>> master #, c-format msgid "Unable to allocate working memory of %d bytes to combine factor levels" msgstr "" -<<<<<<< HEAD -#: assign.c:813 -msgid "Internal error: extra level check sum failed" -msgstr "" - -#: assign.c:832 -======= #: assign.c:801 msgid "Internal error: extra level check sum failed" msgstr "" #: assign.c:820 ->>>>>>> master #, c-format msgid "" "Coercing 'character' RHS to '%s' to match the type of the target column " "(column %d named '%s')." msgstr "" -<<<<<<< HEAD -#: assign.c:838 -======= #: assign.c:826 ->>>>>>> master #, c-format msgid "" "Cannot coerce 'list' RHS to 'integer64' to match the type of the target " "column (column %d named '%s')." msgstr "" -<<<<<<< HEAD -#: assign.c:843 -======= #: assign.c:831 ->>>>>>> master #, c-format msgid "" "Coercing 'list' RHS to '%s' to match the type of the target column (column " "%d named '%s')." msgstr "" -<<<<<<< HEAD -#: assign.c:849 -======= #: assign.c:837 ->>>>>>> master #, c-format msgid "Zero-copy coerce when assigning '%s' to '%s' column %d named '%s'.\n" msgstr "" -<<<<<<< HEAD -#: assign.c:944 -======= #: assign.c:932 ->>>>>>> master #, c-format msgid "type '%s' cannot be coerced to '%s'" msgstr "" -<<<<<<< HEAD -#: assign.c:1064 -======= #: assign.c:1052 ->>>>>>> master msgid "" "To assign integer64 to a character column, please use as.character() for " "clarity." msgstr "" -<<<<<<< HEAD -#: assign.c:1076 -======= #: assign.c:1064 ->>>>>>> master #, c-format msgid "Unsupported column type in assign.c:memrecycle '%s'" msgstr "" -<<<<<<< HEAD -#: assign.c:1123 -======= #: assign.c:1111 ->>>>>>> master #, c-format msgid "Internal error: writeNA passed a vector of type '%s'" msgstr "" -<<<<<<< HEAD -#: assign.c:1154 -======= #: assign.c:1142 ->>>>>>> master #, c-format msgid "" "Internal error: savetl_init checks failed (%d %d %p %p). please report to " "data.table issue tracker." msgstr "" -<<<<<<< HEAD -#: assign.c:1162 -======= #: assign.c:1150 ->>>>>>> master #, c-format msgid "Failed to allocate initial %d items in savetl_init" msgstr "" -<<<<<<< HEAD -#: assign.c:1171 -======= #: assign.c:1159 ->>>>>>> master #, c-format msgid "" "Internal error: reached maximum %d items for savetl. Please report to data." "table issue tracker." msgstr "" -<<<<<<< HEAD -#: assign.c:1178 -======= #: assign.c:1166 ->>>>>>> master #, c-format msgid "Failed to realloc saveds to %d items in savetl" msgstr "" -<<<<<<< HEAD -#: assign.c:1184 -======= #: assign.c:1172 ->>>>>>> master #, c-format msgid "Failed to realloc savedtl to %d items in savetl" msgstr "" -<<<<<<< HEAD -#: assign.c:1207 -msgid "x must be a character vector" -msgstr "" - -#: assign.c:1208 -msgid "'which' must be an integer vector" -msgstr "" - -#: assign.c:1209 -msgid "'new' must be a character vector" -msgstr "" - -#: assign.c:1210 -======= #: assign.c:1195 msgid "x must be a character vector" msgstr "" @@ -705,16 +568,11 @@ msgid "'new' must be a character vector" msgstr "" #: assign.c:1198 ->>>>>>> master #, c-format msgid "'new' is length %d. Should be the same as length of 'which' (%d)" msgstr "" -<<<<<<< HEAD -#: assign.c:1213 -======= #: assign.c:1201 ->>>>>>> master #, c-format msgid "" "Item %d of 'which' is %d which is outside range of the length %d character " @@ -728,10 +586,18 @@ msgid "" "%d. Each should be either length 1 or the length of the longest." msgstr "" +#: between.c:16 +msgid "incbounds must be TRUE or FALSE" +msgstr "" + #: between.c:19 msgid "NAbounds must be TRUE or NA" msgstr "" +#: between.c:22 +msgid "check must be TRUE or FALSE" +msgstr "" + #: between.c:64 #, c-format msgid "Item %d of lower (%d) is greater than item %d of upper (%d)" @@ -892,7 +758,7 @@ msgstr "" #: bmerge.c:412 #, c-format -msgid "Type '%s' is not supported for joining/merging" +msgid "Type '%s' not supported for joining/merging" msgstr "" #: bmerge.c:470 @@ -918,22 +784,14 @@ msgstr "" msgid "x is type '%s' (must be 'character' or NULL)" msgstr "" -<<<<<<< HEAD -#: chmatch.c:66 -======= #: chmatch.c:71 ->>>>>>> master #, c-format msgid "" "Internal error: CHARSXP '%s' has a negative truelength (%d). Please file an " "issue on the data.table tracker." msgstr "" -<<<<<<< HEAD -#: chmatch.c:95 -======= #: chmatch.c:100 ->>>>>>> master #, c-format msgid "" "Failed to allocate % bytes working memory in chmatchdup: " @@ -942,7 +800,7 @@ msgstr "" #: cj.c:89 #, c-format -msgid "Type '%s' is not supported by CJ." +msgid "Type '%s' not supported by CJ." msgstr "" #: coalesce.c:5 @@ -1004,39 +862,11 @@ msgstr "" msgid "coalesce copied first item (inplace=FALSE)\n" msgstr "" -#: coalesce.c:166 fifelse.c:138 fifelse.c:337 shift.c:157 uniqlist.c:96 -#: uniqlist.c:127 uniqlist.c:208 uniqlist.c:245 uniqlist.c:318 +#: coalesce.c:166 #, c-format -msgid "Type '%s' is not supported" -msgstr "" - -<<<<<<< HEAD -#: dogroups.c:15 -msgid "Internal error: order not integer vector" -msgstr "" - -#: dogroups.c:16 -msgid "Internal error: starts not integer" -msgstr "" - -#: dogroups.c:17 -msgid "Internal error: lens not integer" -msgstr "" - -#: dogroups.c:19 -msgid "Internal error: jiscols not NULL but o__ has length" -msgstr "" - -#: dogroups.c:20 -msgid "Internal error: xjiscols not NULL but o__ has length" -msgstr "" - -#: dogroups.c:21 gsumm.c:43 -msgid "env is not an environment" +msgid "Unsupported type: %s" msgstr "" -#: dogroups.c:40 -======= #: dogroups.c:69 msgid "Internal error: order not integer vector" msgstr "" @@ -1062,67 +892,39 @@ msgid "'env' should be an environment" msgstr "" #: dogroups.c:94 ->>>>>>> master #, c-format msgid "" "Internal error: unsupported size-0 type '%s' in column %d of 'by' should " "have been caught earlier" msgstr "" -<<<<<<< HEAD -#: dogroups.c:44 -======= #: dogroups.c:99 ->>>>>>> master #, c-format msgid "!length(bynames)[%d]==length(groups)[%d]==length(grpcols)[%d]" msgstr "" -<<<<<<< HEAD -#: dogroups.c:63 -msgid "row.names attribute of .SD not found" -msgstr "" - -#: dogroups.c:65 -======= #: dogroups.c:121 msgid "row.names attribute of .SD not found" msgstr "" #: dogroups.c:123 ->>>>>>> master #, c-format msgid "" "row.names of .SD isn't integer length 2 with NA as first item; i.e., ." "set_row_names(). [%s %d %d]" msgstr "" -<<<<<<< HEAD -#: dogroups.c:70 -msgid "length(names)!=length(SD)" -msgstr "" - -#: dogroups.c:74 -======= #: dogroups.c:128 msgid "length(names)!=length(SD)" msgstr "" #: dogroups.c:134 ->>>>>>> master #, c-format msgid "" "Internal error: size-0 type %d in .SD column %d should have been caught " "earlier" msgstr "" -<<<<<<< HEAD -#: dogroups.c:84 -msgid "length(xknames)!=length(xSD)" -msgstr "" - -#: dogroups.c:88 -======= #: dogroups.c:136 #, c-format msgid "Internal error: SDall %d length = %d != %d" @@ -1133,65 +935,40 @@ msgid "length(xknames)!=length(xSD)" msgstr "" #: dogroups.c:148 ->>>>>>> master #, c-format msgid "" "Internal error: type %d in .xSD column %d should have been caught by now" msgstr "" -<<<<<<< HEAD -#: dogroups.c:92 -======= #: dogroups.c:152 ->>>>>>> master #, c-format msgid "length(iSD)[%d] != length(jiscols)[%d]" msgstr "" -<<<<<<< HEAD -#: dogroups.c:93 -======= #: dogroups.c:153 ->>>>>>> master #, c-format msgid "length(xSD)[%d] != length(xjiscols)[%d]" msgstr "" -<<<<<<< HEAD -#: dogroups.c:198 -======= #: dogroups.c:259 ->>>>>>> master #, c-format msgid "j evaluates to type '%s'. Must evaluate to atomic vector or list." msgstr "" -<<<<<<< HEAD -#: dogroups.c:206 -======= #: dogroups.c:267 ->>>>>>> master msgid "" "All items in j=list(...) should be atomic vectors or lists. If you are " "trying something like j=list(.SD,newcol=mean(colA)) then use := by group " "instead (much quicker), or cbind or merge afterwards." msgstr "" -<<<<<<< HEAD -#: dogroups.c:215 -======= #: dogroups.c:276 ->>>>>>> master msgid "" "RHS of := is NULL during grouped assignment, but it's not possible to delete " "parts of a column." msgstr "" -<<<<<<< HEAD -#: dogroups.c:219 -======= #: dogroups.c:280 ->>>>>>> master #, c-format msgid "" "Supplied %d items to be assigned to group %d of size %d in column '%s'. The " @@ -1200,39 +977,23 @@ msgid "" "make this intent clear to readers of your code." msgstr "" -<<<<<<< HEAD -#: dogroups.c:230 -======= #: dogroups.c:291 ->>>>>>> master msgid "" "Internal error: Trying to add new column by reference but tl is full; " "setalloccol should have run first at R level before getting to this point in " "dogroups" msgstr "" -<<<<<<< HEAD -#: dogroups.c:245 -======= #: dogroups.c:312 ->>>>>>> master #, c-format msgid "Group %d column '%s': %s" msgstr "" -<<<<<<< HEAD -#: dogroups.c:252 -msgid "j doesn't evaluate to the same number of columns for each group" -msgstr "" - -#: dogroups.c:286 -======= #: dogroups.c:319 msgid "j doesn't evaluate to the same number of columns for each group" msgstr "" #: dogroups.c:353 ->>>>>>> master #, c-format msgid "" "Column %d of j's result for the first group is NULL. We rely on the column " @@ -1243,22 +1004,14 @@ msgid "" "integer() or numeric()." msgstr "" -<<<<<<< HEAD -#: dogroups.c:289 -======= #: dogroups.c:356 ->>>>>>> master msgid "" "j appears to be a named vector. The same names will likely be created over " "and over again for each group and slow things down. Try and pass a named " "list (which data.table optimizes) or an unnamed list() instead.\n" msgstr "" -<<<<<<< HEAD -#: dogroups.c:291 -======= #: dogroups.c:358 ->>>>>>> master #, c-format msgid "" "Column %d of j is a named vector (each item down the rows is named, " @@ -1266,11 +1019,7 @@ msgid "" "over and over for each group). They are ignored anyway.\n" msgstr "" -<<<<<<< HEAD -#: dogroups.c:299 -======= #: dogroups.c:366 ->>>>>>> master msgid "" "The result of j is a named list. It's very inefficient to create the same " "names over and over again for each group. When j=list(...), any names are " @@ -1279,29 +1028,17 @@ msgid "" "to :=). This message may be upgraded to warning in future.\n" msgstr "" -<<<<<<< HEAD -#: dogroups.c:311 -======= #: dogroups.c:378 ->>>>>>> master #, c-format msgid "dogroups: growing from %d to %d rows\n" msgstr "" -<<<<<<< HEAD -#: dogroups.c:312 -======= #: dogroups.c:379 ->>>>>>> master #, c-format msgid "dogroups: length(ans)[%d]!=ngrpcols[%d]+njval[%d]" msgstr "" -<<<<<<< HEAD -#: dogroups.c:330 -======= #: dogroups.c:397 ->>>>>>> master #, c-format msgid "" "Item %d of j's result for group %d is zero length. This will be filled with " @@ -1310,22 +1047,14 @@ msgid "" "buffer." msgstr "" -<<<<<<< HEAD -#: dogroups.c:337 -======= #: dogroups.c:404 ->>>>>>> master #, c-format msgid "" "Column %d of result for group %d is type '%s' but expecting type '%s'. " "Column types must be consistent for each group." msgstr "" -<<<<<<< HEAD -#: dogroups.c:339 -======= #: dogroups.c:406 ->>>>>>> master #, c-format msgid "" "Supplied %d items for column %d of group %d which has %d rows. The RHS " @@ -1334,57 +1063,33 @@ msgid "" "make this intent clear to readers of your code." msgstr "" -<<<<<<< HEAD -#: dogroups.c:354 -======= #: dogroups.c:427 ->>>>>>> master #, c-format msgid "Wrote less rows (%d) than allocated (%d).\n" msgstr "" -<<<<<<< HEAD -#: dogroups.c:364 -======= #: dogroups.c:449 ->>>>>>> master #, c-format msgid "Internal error: block 0 [%d] and block 1 [%d] have both run" msgstr "" -<<<<<<< HEAD -#: dogroups.c:366 -======= #: dogroups.c:451 ->>>>>>> master #, c-format msgid "" "\n" " %s took %.3fs for %d groups\n" msgstr "" -<<<<<<< HEAD -#: dogroups.c:368 -======= #: dogroups.c:453 ->>>>>>> master #, c-format msgid " eval(j) took %.3fs for %d calls\n" msgstr "" -<<<<<<< HEAD -#: dogroups.c:392 -msgid "growVector passed NULL" -msgstr "" - -#: dogroups.c:412 -======= #: dogroups.c:477 msgid "growVector passed NULL" msgstr "" #: dogroups.c:497 ->>>>>>> master #, c-format msgid "Internal error: growVector doesn't support type '%s'" msgstr "" @@ -1412,13 +1117,10 @@ msgstr "" msgid "Argument 'test' must be logical." msgstr "" -<<<<<<< HEAD -======= #: fifelse.c:9 msgid "S4 class objects (except nanotime) are not supported." msgstr "" ->>>>>>> master #: fifelse.c:28 #, c-format msgid "" @@ -1470,16 +1172,9 @@ msgstr "" msgid "'yes' and 'na' are both type factor but their levels are different." msgstr "" -<<<<<<< HEAD -#: fifelse.c:152 -======= #: fifelse.c:138 fifelse.c:336 ->>>>>>> master #, c-format -msgid "" -"Received %d inputs; please supply an even number of arguments in ..., " -"consisting of logical condition, resulting value pairs (in that order). Note " -"that the default argument must be named explicitly, e.g., default=0" +msgid "Type %s is not supported." msgstr "" #: fifelse.c:152 @@ -1656,13 +1351,8 @@ msgid "" "'value.name' must be a character vector of length =1." msgstr "" -<<<<<<< HEAD -#: fmelt.c:280 -msgid "'variable.name' must be a character/integer vector of length 1." -======= #: fmelt.c:294 msgid "'variable.name' must be a character/integer vector of length=1." ->>>>>>> master msgstr "" #: fmelt.c:343 @@ -1858,9 +1548,6 @@ msgstr "" msgid "Column %d is length %d which differs from length of column 1 (%d)\n" msgstr "" -<<<<<<< HEAD -#: forder.c:473 -======= #: forder.c:468 msgid "retGrp must be TRUE or FALSE" msgstr "" @@ -1870,7 +1557,6 @@ msgid "sort must be TRUE or FALSE" msgstr "" #: forder.c:474 ->>>>>>> master msgid "At least one of retGrp= or sort= must be TRUE" msgstr "" @@ -1976,26 +1662,17 @@ msgstr "" msgid "x must be type 'double'" msgstr "" -<<<<<<< HEAD -#: frank.c:9 frank.c:10 frank.c:150 frank.c:151 subset.c:92 subset.c:242 -#: subset.c:255 -======= #: frank.c:9 #, c-format msgid "Internal error. Argument 'x' to Cdt_na is type '%s' not 'list'" msgstr "" #: frank.c:10 ->>>>>>> master #, c-format -msgid "Internal error. Argument '%s' to %s is type '%s' not '%s'" +msgid "Internal error. Argument 'cols' to Cdt_na is type '%s' not 'integer'" msgstr "" -<<<<<<< HEAD -#: frank.c:14 frank.c:155 -======= #: frank.c:14 frank.c:155 subset.c:276 ->>>>>>> master #, c-format msgid "Item %d of 'cols' is %d which is outside 1-based range [1,ncol(x)=%d]" msgstr "" @@ -2023,8 +1700,6 @@ msgstr "" msgid "Internal error: unknown ties value in frank: %d" msgstr "" -<<<<<<< HEAD -======= #: frank.c:150 #, c-format msgid "Internal error. Argument 'x' to CanyNA is type '%s' not 'list'" @@ -2035,7 +1710,6 @@ msgstr "" msgid "Internal error. Argument 'cols' to CanyNA is type '%s' not 'integer'" msgstr "" ->>>>>>> master #: fread.c:104 #, c-format msgid "" @@ -2072,86 +1746,39 @@ msgstr "" msgid " File copy in RAM took %.3f seconds.\n" msgstr "" -<<<<<<< HEAD -#: fread.c:1105 -======= #: fread.c:1249 ->>>>>>> master msgid "" "Previous fread() session was not cleaned up properly. Cleaned up ok at the " "beginning of this fread() call.\n" msgstr "" -<<<<<<< HEAD -#: fread.c:1108 -msgid "[01] Check arguments\n" -msgstr "" - -#: fread.c:1115 -======= #: fread.c:1252 msgid "[01] Check arguments\n" msgstr "" #: fread.c:1259 ->>>>>>> master #, c-format msgid " Using %d threads (omp_get_max_threads()=%d, nth=%d)\n" msgstr "" -<<<<<<< HEAD -#: fread.c:1123 -======= #: fread.c:1267 ->>>>>>> master msgid "" "Internal error: NAstrings is itself NULL. When empty it should be pointer to " "NULL." msgstr "" -<<<<<<< HEAD -#: fread.c:1141 -======= #: fread.c:1285 ->>>>>>> master #, c-format msgid "freadMain: NAstring <<%s>> has whitespace at the beginning or end" msgstr "" -<<<<<<< HEAD -#: fread.c:1146 -======= #: fread.c:1290 ->>>>>>> master #, c-format msgid "" "freadMain: NAstring <<%s>> is recognized as type boolean, this is not " "permitted." msgstr "" -<<<<<<< HEAD -#: fread.c:1156 -msgid " No NAstrings provided.\n" -msgstr "" - -#: fread.c:1158 -msgid " NAstrings = [" -msgstr "" - -#: fread.c:1161 -msgid "]\n" -msgstr "" - -#: fread.c:1163 -msgid " One or more of the NAstrings looks like a number.\n" -msgstr "" - -#: fread.c:1165 -msgid " None of the NAstrings look like numbers.\n" -msgstr "" - -#: fread.c:1167 -======= #: fread.c:1301 msgid " No NAstrings provided.\n" msgstr "" @@ -2173,201 +1800,109 @@ msgid " None of the NAstrings look like numbers.\n" msgstr "" #: fread.c:1312 ->>>>>>> master #, c-format msgid " skip num lines = %\n" msgstr "" -<<<<<<< HEAD -#: fread.c:1168 -======= #: fread.c:1313 ->>>>>>> master #, c-format msgid " skip to string = <<%s>>\n" msgstr "" -<<<<<<< HEAD -#: fread.c:1169 -======= #: fread.c:1314 ->>>>>>> master #, c-format msgid " show progress = %d\n" msgstr "" -<<<<<<< HEAD -#: fread.c:1170 -======= #: fread.c:1315 ->>>>>>> master #, c-format msgid " 0/1 column will be read as %s\n" msgstr "" -<<<<<<< HEAD -#: fread.c:1178 -======= #: fread.c:1323 ->>>>>>> master #, c-format msgid "sep == quote ('%c') is not allowed" msgstr "" -<<<<<<< HEAD -#: fread.c:1179 -msgid "dec='' not allowed. Should be '.' or ','" -msgstr "" - -#: fread.c:1180 -======= #: fread.c:1324 msgid "dec='' not allowed. Should be '.' or ','" msgstr "" #: fread.c:1325 ->>>>>>> master #, c-format msgid "sep == dec ('%c') is not allowed" msgstr "" -<<<<<<< HEAD -#: fread.c:1181 -======= #: fread.c:1326 ->>>>>>> master #, c-format msgid "quote == dec ('%c') is not allowed" msgstr "" -<<<<<<< HEAD -#: fread.c:1198 -msgid "[02] Opening the file\n" -msgstr "" - -#: fread.c:1201 -======= #: fread.c:1343 msgid "[02] Opening the file\n" msgstr "" #: fread.c:1346 ->>>>>>> master msgid "" " `input` argument is provided rather than a file name, interpreting as raw " "text to read\n" msgstr "" -<<<<<<< HEAD -#: fread.c:1205 -msgid "Internal error: last byte of character input isn't \\0" -msgstr "" - -#: fread.c:1208 -======= #: fread.c:1350 msgid "Internal error: last byte of character input isn't \\0" msgstr "" #: fread.c:1353 ->>>>>>> master #, c-format msgid " Opening file %s\n" msgstr "" -<<<<<<< HEAD -#: fread.c:1212 fread.c:1237 -======= #: fread.c:1357 ->>>>>>> master #, c-format -msgid "File not found: %s" +msgid "file not found: %s" msgstr "" -<<<<<<< HEAD -#: fread.c:1216 -======= #: fread.c:1361 ->>>>>>> master #, c-format msgid "Opened file ok but couldn't obtain its size: %s" msgstr "" -<<<<<<< HEAD -#: fread.c:1219 fread.c:1247 -======= #: fread.c:1364 fread.c:1392 ->>>>>>> master #, c-format msgid "File is empty: %s" msgstr "" -<<<<<<< HEAD -#: fread.c:1220 fread.c:1248 -======= #: fread.c:1365 fread.c:1393 ->>>>>>> master #, c-format msgid " File opened, size = %s.\n" msgstr "" -<<<<<<< HEAD -#: fread.c:1243 -======= #: fread.c:1382 #, c-format msgid "File not found: %s" msgstr "" #: fread.c:1388 ->>>>>>> master #, c-format msgid "Unable to open file after %d attempts (error %d): %s" msgstr "" -<<<<<<< HEAD -#: fread.c:1245 -======= #: fread.c:1390 ->>>>>>> master #, c-format msgid "GetFileSizeEx failed (returned 0) on file: %s" msgstr "" -<<<<<<< HEAD -#: fread.c:1250 -======= #: fread.c:1395 ->>>>>>> master #, c-format msgid "This is Windows, CreateFileMapping returned error %d for file %s" msgstr "" -<<<<<<< HEAD -#: fread.c:1257 -======= #: fread.c:1402 ->>>>>>> master #, c-format msgid "" "Opened %s file ok but could not memory map it. This is a %dbit process. %s." msgstr "" -<<<<<<< HEAD -#: fread.c:1258 -msgid "Please upgrade to 64bit" -msgstr "" - -#: fread.c:1258 -msgid "There is probably not enough contiguous virtual memory available" -msgstr "" - -#: fread.c:1261 -msgid " Memory mapped ok\n" -msgstr "" - -#: fread.c:1263 -======= #: fread.c:1403 msgid "Please upgrade to 64bit" msgstr "" @@ -2381,69 +1916,37 @@ msgid " Memory mapped ok\n" msgstr "" #: fread.c:1408 ->>>>>>> master msgid "" "Internal error: Neither `input` nor `filename` are given, nothing to read." msgstr "" -<<<<<<< HEAD -#: fread.c:1280 -msgid "[03] Detect and skip BOM\n" -msgstr "" - -#: fread.c:1284 -======= #: fread.c:1425 msgid "[03] Detect and skip BOM\n" msgstr "" #: fread.c:1429 ->>>>>>> master msgid "" " UTF-8 byte order mark EF BB BF found at the start of the file and " "skipped.\n" msgstr "" -<<<<<<< HEAD -#: fread.c:1289 -======= #: fread.c:1434 ->>>>>>> master msgid "" "GB-18030 encoding detected, however fread() is unable to decode it. Some " "character fields may be garbled.\n" msgstr "" -<<<<<<< HEAD -#: fread.c:1292 -======= #: fread.c:1437 ->>>>>>> master msgid "" "File is encoded in UTF-16, this encoding is not supported by fread(). Please " "recode the file to UTF-8." msgstr "" -<<<<<<< HEAD -#: fread.c:1297 -======= #: fread.c:1442 ->>>>>>> master #, c-format msgid " Last byte(s) of input found to be %s and removed.\n" msgstr "" -<<<<<<< HEAD -#: fread.c:1300 -msgid "Input is empty or only contains BOM or terminal control characters" -msgstr "" - -#: fread.c:1307 -msgid "[04] Arrange mmap to be \\0 terminated\n" -msgstr "" - -#: fread.c:1314 -======= #: fread.c:1445 msgid "Input is empty or only contains BOM or terminal control characters" msgstr "" @@ -2453,146 +1956,82 @@ msgid "[04] Arrange mmap to be \\0 terminated\n" msgstr "" #: fread.c:1459 ->>>>>>> master msgid "" " No \\n exists in the file at all, so single \\r (if any) will be taken as " "one line ending. This is unusual but will happen normally when there is no " "\\r either; e.g. a single line missing its end of line.\n" msgstr "" -<<<<<<< HEAD -#: fread.c:1315 -======= #: fread.c:1460 ->>>>>>> master msgid "" " \\n has been found in the input and different lines can end with different " "line endings (e.g. mixed \\n and \\r\\n in one file). This is common and " "ideal.\n" msgstr "" -<<<<<<< HEAD -#: fread.c:1339 -======= #: fread.c:1484 ->>>>>>> master #, c-format msgid "" " File ends abruptly with '%c'. Final end-of-line is missing. Using cow page " "to write 0 to the last byte.\n" msgstr "" -<<<<<<< HEAD -#: fread.c:1345 -======= #: fread.c:1490 ->>>>>>> master msgid "" "This file is very unusual: it ends abruptly without a final newline, and " "also its size is a multiple of 4096 bytes. Please properly end the last row " "with a newline using for example 'echo >> file' to avoid this " msgstr "" -<<<<<<< HEAD -#: fread.c:1346 -======= #: fread.c:1491 ->>>>>>> master #, c-format msgid " File ends abruptly with '%c'. Copying file in RAM. %s copy.\n" msgstr "" -<<<<<<< HEAD -#: fread.c:1380 -msgid "[05] Skipping initial rows if needed\n" -msgstr "" - -#: fread.c:1386 -======= #: fread.c:1525 msgid "[05] Skipping initial rows if needed\n" msgstr "" #: fread.c:1531 ->>>>>>> master #, c-format msgid "" "skip='%s' not found in input (it is case sensitive and literal; i.e., no " "patterns, wildcards or regex)" msgstr "" -<<<<<<< HEAD -#: fread.c:1392 -======= #: fread.c:1537 ->>>>>>> master #, c-format msgid "" "Found skip='%s' on line %. Taking this to be header row or first row " "of data.\n" msgstr "" -<<<<<<< HEAD -#: fread.c:1405 -======= #: fread.c:1550 ->>>>>>> master #, c-format msgid " Skipped to line % in the file" msgstr "" -<<<<<<< HEAD -#: fread.c:1406 -======= #: fread.c:1551 ->>>>>>> master #, c-format msgid "skip=% but the input only has % line%s" msgstr "" -<<<<<<< HEAD -#: fread.c:1415 -======= #: fread.c:1560 ->>>>>>> master msgid "" "Input is either empty, fully whitespace, or skip has been set after the last " "non-whitespace." msgstr "" -<<<<<<< HEAD -#: fread.c:1417 -======= #: fread.c:1562 ->>>>>>> master #, c-format msgid " Moved forward to first non-blank line (%d)\n" msgstr "" -<<<<<<< HEAD -#: fread.c:1418 -======= #: fread.c:1563 ->>>>>>> master #, c-format msgid " Positioned on line %d starting: <<%s>>\n" msgstr "" -<<<<<<< HEAD -#: fread.c:1436 -msgid "[06] Detect separator, quoting rule, and ncolumns\n" -msgstr "" - -#: fread.c:1440 -msgid " sep='\\n' passed in meaning read lines as single character column\n" -msgstr "" - -#: fread.c:1459 -msgid " Detecting sep automatically ...\n" -msgstr "" - -#: fread.c:1466 -======= #: fread.c:1581 msgid "[06] Detect separator, quoting rule, and ncolumns\n" msgstr "" @@ -2606,54 +2045,33 @@ msgid " Detecting sep automatically ...\n" msgstr "" #: fread.c:1611 ->>>>>>> master #, c-format msgid " Using supplied sep '%s'\n" msgstr "" -<<<<<<< HEAD -#: fread.c:1500 -======= #: fread.c:1645 ->>>>>>> master #, c-format msgid " with %d fields using quote rule %d\n" msgstr "" -<<<<<<< HEAD -#: fread.c:1550 -======= #: fread.c:1695 ->>>>>>> master #, c-format msgid " with %d lines of %d fields using quote rule %d\n" msgstr "" -<<<<<<< HEAD -#: fread.c:1557 -======= #: fread.c:1702 ->>>>>>> master msgid "" " No sep and quote rule found a block of 2x2 or greater. Single column " "input.\n" msgstr "" -<<<<<<< HEAD -#: fread.c:1573 -======= #: fread.c:1718 ->>>>>>> master msgid "" "Single column input contains invalid quotes. Self healing only effective " "when ncol>1" msgstr "" -<<<<<<< HEAD -#: fread.c:1578 -======= #: fread.c:1723 ->>>>>>> master #, c-format msgid "" "Found and resolved improper quoting in first %d rows. If the fields are not " @@ -2661,170 +2079,95 @@ msgid "" "\"\" to avoid this warning." msgstr "" -<<<<<<< HEAD -#: fread.c:1594 -======= #: fread.c:1739 ->>>>>>> master #, c-format msgid "" "Internal error: ncol==%d line==%d after detecting sep, ncol and first line" msgstr "" -<<<<<<< HEAD -#: fread.c:1597 -======= #: fread.c:1742 ->>>>>>> master #, c-format msgid "Internal error: first line has field count %d but expecting %d" msgstr "" -<<<<<<< HEAD -#: fread.c:1599 -======= #: fread.c:1744 ->>>>>>> master #, c-format msgid "" " Detected %d columns on line %d. This line is either column names or first " "data row. Line starts as: <<%s>>\n" msgstr "" -<<<<<<< HEAD -#: fread.c:1601 -======= #: fread.c:1746 ->>>>>>> master #, c-format msgid " Quote rule picked = %d\n" msgstr "" -<<<<<<< HEAD -#: fread.c:1602 -======= #: fread.c:1747 ->>>>>>> master #, c-format msgid " fill=%s and the most number of columns found is %d\n" msgstr "" -<<<<<<< HEAD -#: fread.c:1608 -======= #: fread.c:1753 ->>>>>>> master msgid "" "This file is very unusual: it's one single column, ends with 2 or more end-" "of-line (representing several NA at the end), and is a multiple of 4096, too." msgstr "" -<<<<<<< HEAD -#: fread.c:1609 -======= #: fread.c:1754 ->>>>>>> master #, c-format msgid " Copying file in RAM. %s\n" msgstr "" -<<<<<<< HEAD -#: fread.c:1615 -======= #: fread.c:1760 ->>>>>>> master msgid "" " 1-column file ends with 2 or more end-of-line. Restoring last eol using " "extra byte in cow page.\n" msgstr "" -<<<<<<< HEAD -#: fread.c:1634 -======= #: fread.c:1779 ->>>>>>> master msgid "" "[07] Detect column types, good nrow estimate and whether first row is column " "names\n" msgstr "" -<<<<<<< HEAD -#: fread.c:1635 -======= #: fread.c:1780 ->>>>>>> master #, c-format msgid " 'header' changed by user from 'auto' to %s\n" msgstr "" -<<<<<<< HEAD -#: fread.c:1639 -======= #: fread.c:1784 ->>>>>>> master #, c-format msgid "Failed to allocate 2 x %d bytes for type and tmpType: %s" msgstr "" -<<<<<<< HEAD -#: fread.c:1660 -======= #: fread.c:1805 ->>>>>>> master #, c-format msgid " Number of sampling jump points = %d because " msgstr "" -<<<<<<< HEAD -#: fread.c:1661 -======= #: fread.c:1806 ->>>>>>> master #, c-format msgid "nrow limit (%) supplied\n" msgstr "" -<<<<<<< HEAD -#: fread.c:1662 -msgid "jump0size==0\n" -msgstr "" - -#: fread.c:1663 -======= #: fread.c:1807 msgid "jump0size==0\n" msgstr "" #: fread.c:1808 ->>>>>>> master #, c-format msgid "" "(% bytes from row 1 to eof) / (2 * % jump0size) == " "%\n" msgstr "" -<<<<<<< HEAD -#: fread.c:1701 -======= #: fread.c:1846 ->>>>>>> master #, c-format msgid "" " A line with too-%s fields (%d/%d) was found on line %d of sample jump %d. " "%s\n" msgstr "" -<<<<<<< HEAD -#: fread.c:1702 -msgid "few" -msgstr "" - -#: fread.c:1702 -msgid "many" -msgstr "" - -#: fread.c:1702 -======= #: fread.c:1847 msgid "few" msgstr "" @@ -2834,294 +2177,170 @@ msgid "many" msgstr "" #: fread.c:1847 ->>>>>>> master msgid "" "Most likely this jump landed awkwardly so type bumps here will be skipped." msgstr "" -<<<<<<< HEAD -#: fread.c:1728 -======= #: fread.c:1873 ->>>>>>> master #, c-format msgid " Type codes (jump %03d) : %s Quote rule %d\n" msgstr "" -<<<<<<< HEAD -#: fread.c:1741 -======= #: fread.c:1886 ->>>>>>> master #, c-format msgid "" " 'header' determined to be true due to column %d containing a string on row " "1 and a lower type (%s) in the rest of the %d sample rows\n" msgstr "" -<<<<<<< HEAD -#: fread.c:1753 -======= #: fread.c:1898 ->>>>>>> master msgid "" "Internal error: row before first data row has the same number of fields but " "we're not using it." msgstr "" -<<<<<<< HEAD -#: fread.c:1754 -======= #: fread.c:1899 ->>>>>>> master msgid "" "Internal error: ch!=pos after counting fields in the line before the first " "data row." msgstr "" -<<<<<<< HEAD -#: fread.c:1755 -======= #: fread.c:1900 ->>>>>>> master #, c-format msgid "" "Types in 1st data row match types in 2nd data row but previous row has %d " "fields. Taking previous row as column names." msgstr "" -<<<<<<< HEAD -#: fread.c:1758 -======= #: fread.c:1903 ->>>>>>> master #, c-format msgid "" "Detected %d column names but the data has %d columns (i.e. invalid file). " "Added %d extra default column name%s\n" msgstr "" -<<<<<<< HEAD -#: fread.c:1759 -======= #: fread.c:1904 ->>>>>>> master msgid "" " for the first column which is guessed to be row names or an index. Use " "setnames() afterwards if this guess is not correct, or fix the file write " "command that created the file to create a valid file." msgstr "" -<<<<<<< HEAD -#: fread.c:1759 -msgid "s at the end." -msgstr "" - -#: fread.c:1761 -======= #: fread.c:1904 msgid "s at the end." msgstr "" #: fread.c:1906 ->>>>>>> master msgid "" "Internal error: fill=true but there is a previous row which should already " "have been filled." msgstr "" -<<<<<<< HEAD -#: fread.c:1762 -======= #: fread.c:1907 ->>>>>>> master #, c-format msgid "" "Detected %d column names but the data has %d columns. Filling rows " "automatically. Set fill=TRUE explicitly to avoid this warning.\n" msgstr "" -<<<<<<< HEAD -#: fread.c:1766 -======= #: fread.c:1911 ->>>>>>> master #, c-format msgid "Failed to realloc 2 x %d bytes for type and tmpType: %s" msgstr "" -<<<<<<< HEAD -#: fread.c:1786 -======= #: fread.c:1931 ->>>>>>> master #, c-format msgid "" " 'header' determined to be %s because there are%s number fields in the " "first and only row\n" msgstr "" -<<<<<<< HEAD -#: fread.c:1786 -msgid " no" -msgstr "" - -#: fread.c:1789 -======= #: fread.c:1931 msgid " no" msgstr "" #: fread.c:1934 ->>>>>>> master msgid "" " 'header' determined to be true because all columns are type string and a " "better guess is not possible\n" msgstr "" -<<<<<<< HEAD -#: fread.c:1791 -======= #: fread.c:1936 ->>>>>>> master msgid "" " 'header' determined to be false because there are some number columns and " "those columns do not have a string field at the top of them\n" msgstr "" -<<<<<<< HEAD -#: fread.c:1807 -======= #: fread.c:1952 ->>>>>>> master #, c-format msgid " Type codes (first row) : %s Quote rule %d\n" msgstr "" -<<<<<<< HEAD -#: fread.c:1816 -======= #: fread.c:1961 ->>>>>>> master #, c-format msgid "" " All rows were sampled since file is small so we know nrow=% " "exactly\n" msgstr "" -<<<<<<< HEAD -#: fread.c:1828 fread.c:1835 -msgid " =====\n" -msgstr "" - -#: fread.c:1829 -======= #: fread.c:1973 fread.c:1980 msgid " =====\n" msgstr "" #: fread.c:1974 ->>>>>>> master #, c-format msgid "" " Sampled % rows (handled \\n inside quoted fields) at %d jump " "points\n" msgstr "" -<<<<<<< HEAD -#: fread.c:1830 -======= #: fread.c:1975 ->>>>>>> master #, c-format msgid "" " Bytes from first data row on line %d to the end of last row: %\n" msgstr "" -<<<<<<< HEAD -#: fread.c:1831 -======= #: fread.c:1976 ->>>>>>> master #, c-format msgid " Line length: mean=%.2f sd=%.2f min=%d max=%d\n" msgstr "" -<<<<<<< HEAD -#: fread.c:1832 -======= #: fread.c:1977 ->>>>>>> master #, c-format msgid " Estimated number of rows: % / %.2f = %\n" msgstr "" -<<<<<<< HEAD -#: fread.c:1833 -======= #: fread.c:1978 ->>>>>>> master #, c-format msgid "" " Initial alloc = % rows (% + %d%%) using bytes/" "max(mean-2*sd,min) clamped between [1.1*estn, 2.0*estn]\n" msgstr "" -<<<<<<< HEAD -#: fread.c:1837 -======= #: fread.c:1982 ->>>>>>> master #, c-format msgid "Internal error: sampleLines(%) > allocnrow(%)" msgstr "" -<<<<<<< HEAD -#: fread.c:1841 -======= #: fread.c:1986 ->>>>>>> master #, c-format msgid " Alloc limited to lower nrows=% passed in.\n" msgstr "" -<<<<<<< HEAD -#: fread.c:1853 -msgid "[08] Assign column names\n" -msgstr "" - -#: fread.c:1861 -======= #: fread.c:1998 msgid "[08] Assign column names\n" msgstr "" #: fread.c:2006 ->>>>>>> master #, c-format msgid "Unable to allocate %d*%d bytes for column name pointers: %s" msgstr "" -<<<<<<< HEAD -#: fread.c:1883 -======= #: fread.c:2028 ->>>>>>> master #, c-format msgid "Internal error: reading colnames ending on '%c'" msgstr "" -<<<<<<< HEAD -#: fread.c:1901 -msgid "[09] Apply user overrides on column types\n" -msgstr "" - -#: fread.c:1905 -msgid " Cancelled by user: userOverride() returned false." -msgstr "" - -#: fread.c:1915 -======= #: fread.c:2046 msgid "[09] Apply user overrides on column types\n" msgstr "" @@ -3131,16 +2350,11 @@ msgid " Cancelled by user: userOverride() returned false." msgstr "" #: fread.c:2060 ->>>>>>> master #, c-format msgid "Failed to allocate %d bytes for size array: %s" msgstr "" -<<<<<<< HEAD -#: fread.c:1922 -======= #: fread.c:2067 ->>>>>>> master #, c-format msgid "" "Attempt to override column %d%s%.*s%s of inherent type '%s' down to '%s' " @@ -3148,140 +2362,77 @@ msgid "" "was intended, please coerce to the lower type afterwards." msgstr "" -<<<<<<< HEAD -#: fread.c:1936 -======= #: fread.c:2082 ->>>>>>> master #, c-format msgid " After %d type and %d drop user overrides : %s\n" msgstr "" -<<<<<<< HEAD -#: fread.c:1944 -msgid "[10] Allocate memory for the datatable\n" -msgstr "" - -#: fread.c:1945 -======= #: fread.c:2090 msgid "[10] Allocate memory for the datatable\n" msgstr "" #: fread.c:2091 ->>>>>>> master #, c-format msgid " Allocating %d column slots (%d - %d dropped) with % rows\n" msgstr "" -<<<<<<< HEAD -#: fread.c:1999 -======= #: fread.c:2145 ->>>>>>> master #, c-format msgid "Buffer size % is too large\n" msgstr "" -<<<<<<< HEAD -#: fread.c:2002 -msgid "[11] Read the data\n" -msgstr "" - -#: fread.c:2005 -======= #: fread.c:2148 msgid "[11] Read the data\n" msgstr "" #: fread.c:2151 ->>>>>>> master #, c-format msgid " jumps=[%d..%d), chunk_size=%, total_size=%\n" msgstr "" -<<<<<<< HEAD -#: fread.c:2017 -======= #: fread.c:2163 ->>>>>>> master #, c-format msgid "Internal error: Master thread is not thread 0 but thread %d.\n" msgstr "" -<<<<<<< HEAD -#: fread.c:2225 -======= #: fread.c:2371 ->>>>>>> master #, c-format msgid "" "Column %d (\"%.*s\") bumped from '%s' to '%s' due to <<%.*s>> on row " "%\n" msgstr "" -<<<<<<< HEAD -#: fread.c:2274 -======= #: fread.c:2421 ->>>>>>> master #, c-format msgid "" "Internal error: invalid head position. jump=%d, headPos=%p, thisJumpStart=" "%p, sof=%p" msgstr "" -<<<<<<< HEAD -#: fread.c:2347 -======= #: fread.c:2494 ->>>>>>> master #, c-format msgid "" " Too few rows allocated. Allocating additional % rows (now nrows=" "%) and continue reading from jump %d\n" msgstr "" -<<<<<<< HEAD -#: fread.c:2354 -======= #: fread.c:2501 ->>>>>>> master #, c-format msgid " Restarting team from jump %d. nSwept==%d quoteRule==%d\n" msgstr "" -<<<<<<< HEAD -#: fread.c:2374 -======= #: fread.c:2521 ->>>>>>> master #, c-format msgid " %d out-of-sample type bumps: %s\n" msgstr "" -<<<<<<< HEAD -#: fread.c:2410 -======= #: fread.c:2557 ->>>>>>> master #, c-format msgid "" "Read % rows x %d columns from %s file in %02d:%06.3f wall clock " "time\n" msgstr "" -<<<<<<< HEAD -#: fread.c:2417 -msgid "[12] Finalizing the datatable\n" -msgstr "" - -#: fread.c:2418 -msgid " Type counts:\n" -msgstr "" - -#: fread.c:2420 -======= #: fread.c:2564 msgid "[12] Finalizing the datatable\n" msgstr "" @@ -3291,36 +2442,23 @@ msgid " Type counts:\n" msgstr "" #: fread.c:2567 ->>>>>>> master #, c-format msgid "%10d : %-9s '%c'\n" msgstr "" -<<<<<<< HEAD -#: fread.c:2436 -======= #: fread.c:2583 ->>>>>>> master #, c-format msgid "Discarded single-line footer: <<%s>>" msgstr "" -<<<<<<< HEAD -#: fread.c:2441 -======= #: fread.c:2588 ->>>>>>> master #, c-format msgid "" "Stopped early on line %. Expected %d fields but found %d. Consider " "fill=TRUE and comment.char=. First discarded non-empty line: <<%s>>" msgstr "" -<<<<<<< HEAD -#: fread.c:2447 -======= #: fread.c:2594 ->>>>>>> master #, c-format msgid "" "Found and resolved improper quoting out-of-sample. First healed line " @@ -3328,115 +2466,67 @@ msgid "" "not appear within any field), try quote=\"\" to avoid this warning." msgstr "" -<<<<<<< HEAD -#: fread.c:2451 -msgid "=============================\n" -msgstr "" - -#: fread.c:2453 -======= #: fread.c:2598 msgid "=============================\n" msgstr "" #: fread.c:2600 ->>>>>>> master #, c-format msgid "%8.3fs (%3.0f%%) Memory map %.3fGB file\n" msgstr "" -<<<<<<< HEAD -#: fread.c:2454 -======= #: fread.c:2601 ->>>>>>> master #, c-format msgid "%8.3fs (%3.0f%%) sep=" msgstr "" -<<<<<<< HEAD -#: fread.c:2456 -======= #: fread.c:2603 ->>>>>>> master #, c-format msgid " ncol=%d and header detection\n" msgstr "" -<<<<<<< HEAD -#: fread.c:2457 -======= #: fread.c:2604 ->>>>>>> master #, c-format msgid "%8.3fs (%3.0f%%) Column type detection using % sample rows\n" msgstr "" -<<<<<<< HEAD -#: fread.c:2459 -======= #: fread.c:2606 ->>>>>>> master #, c-format msgid "" "%8.3fs (%3.0f%%) Allocation of % rows x %d cols (%.3fGB) of which " "% (%3.0f%%) rows used\n" msgstr "" -<<<<<<< HEAD -#: fread.c:2463 -======= #: fread.c:2610 ->>>>>>> master #, c-format msgid "" "%8.3fs (%3.0f%%) Reading %d chunks (%d swept) of %.3fMB (each chunk %d rows) " "using %d threads\n" msgstr "" -<<<<<<< HEAD -#: fread.c:2465 -======= #: fread.c:2612 ->>>>>>> master #, c-format msgid "" " + %8.3fs (%3.0f%%) Parse to row-major thread buffers (grown %d times)\n" msgstr "" -<<<<<<< HEAD -#: fread.c:2466 -======= #: fread.c:2613 ->>>>>>> master #, c-format msgid " + %8.3fs (%3.0f%%) Transpose\n" msgstr "" -<<<<<<< HEAD -#: fread.c:2467 -======= #: fread.c:2614 ->>>>>>> master #, c-format msgid " + %8.3fs (%3.0f%%) Waiting\n" msgstr "" -<<<<<<< HEAD -#: fread.c:2468 -======= #: fread.c:2615 ->>>>>>> master #, c-format msgid "" "%8.3fs (%3.0f%%) Rereading %d columns due to out-of-sample type exceptions\n" msgstr "" -<<<<<<< HEAD -#: fread.c:2470 -======= #: fread.c:2617 ->>>>>>> master #, c-format msgid "%8.3fs Total\n" msgstr "" @@ -3518,11 +2608,7 @@ msgid "" "but colClasses= has been provided as well. Please remove colClasses=." msgstr "" -<<<<<<< HEAD -#: freadR.c:196 freadR.c:342 -======= #: freadR.c:204 freadR.c:370 ->>>>>>> master msgid "colClasses is type list but has no names" msgstr "" @@ -3586,11 +2672,7 @@ msgstr "" msgid "Column number %d ('%s') has been selected twice by select=" msgstr "" -<<<<<<< HEAD -#: freadR.c:313 -======= #: freadR.c:326 ->>>>>>> master #, c-format msgid "" "colClasses= is an unnamed vector of types, length %d, but there are %d " @@ -3599,94 +2681,54 @@ msgid "" "colClasses=. Please see examples in ?fread." msgstr "" -<<<<<<< HEAD -#: freadR.c:325 -msgid "Internal error: selectInts is NULL but selectColClasses is true" -msgstr "" - -#: freadR.c:327 -======= #: freadR.c:346 msgid "Internal error: selectInts is NULL but selectColClasses is true" msgstr "" #: freadR.c:348 ->>>>>>> master msgid "" "Internal error: length(selectSxp)!=length(colClassesSxp) but " "selectColClasses is true" msgstr "" -<<<<<<< HEAD -#: freadR.c:340 -======= #: freadR.c:368 ->>>>>>> master #, c-format msgid "colClasses is type '%s' but should be list or character" msgstr "" -<<<<<<< HEAD -#: freadR.c:364 -======= #: freadR.c:392 ->>>>>>> master #, c-format msgid "Column name '%s' (colClasses[[%d]][%d]) not found" msgstr "" -<<<<<<< HEAD -#: freadR.c:366 -======= #: freadR.c:394 ->>>>>>> master #, c-format msgid "colClasses[[%d]][%d] is NA" msgstr "" -<<<<<<< HEAD -#: freadR.c:370 -======= #: freadR.c:398 ->>>>>>> master #, c-format msgid "" "Column %d ('%s') appears more than once in colClasses. The second time is " "colClasses[[%d]][%d]." msgstr "" -<<<<<<< HEAD -#: freadR.c:377 -======= #: freadR.c:410 ->>>>>>> master #, c-format msgid "Column number %d (colClasses[[%d]][%d]) is out of range [1,ncol=%d]" msgstr "" -<<<<<<< HEAD -#: freadR.c:579 -======= #: freadR.c:626 ->>>>>>> master #, c-format msgid "Field size is 1 but the field is of type %d\n" msgstr "" -<<<<<<< HEAD -#: freadR.c:588 -======= #: freadR.c:635 ->>>>>>> master #, c-format msgid "Internal error: unexpected field of size %d\n" msgstr "" -<<<<<<< HEAD -#: freadR.c:656 -======= #: freadR.c:703 ->>>>>>> master #, c-format msgid "%s" msgstr "" @@ -3783,6 +2825,10 @@ msgstr "" msgid "n must be non 0 length" msgstr "" +#: frollR.c:50 +msgid "adaptive must be TRUE or FALSE" +msgstr "" + #: frollR.c:58 msgid "n must be integer, list is accepted for adaptive TRUE" msgstr "" @@ -3799,14 +2845,11 @@ msgstr "" msgid "n must be integer vector or list of integer vectors" msgstr "" -<<<<<<< HEAD -======= #: frollR.c:104 gsumm.c:342 gsumm.c:577 gsumm.c:686 gsumm.c:805 gsumm.c:950 #: gsumm.c:1261 gsumm.c:1402 uniqlist.c:351 msgid "na.rm must be TRUE or FALSE" msgstr "" ->>>>>>> master #: frollR.c:107 msgid "hasNA must be TRUE, FALSE or NA" msgstr "" @@ -3817,12 +2860,10 @@ msgid "" "NA values use hasNA TRUE, otherwise leave it as default NA" msgstr "" -#: frollR.c:119 frollR.c:151 frollR.c:185 frollR.c:275 nafill.c:159 -#: nafill.c:191 -#, c-format +#: frollR.c:119 frollR.c:275 msgid "" -"Internal error: invalid %s argument in %s function should have been caught " -"earlier. Please report to the data.table issue tracker." +"Internal error: invalid align argument in rolling function, should have been " +"caught before. please report to data.table issue tracker." msgstr "" #: frollR.c:122 @@ -3850,9 +2891,6 @@ msgid "" "to number of observations provided in 'x'" msgstr "" -<<<<<<< HEAD -#: frollR.c:155 frollR.c:279 nafill.c:162 shift.c:21 -======= #: frollR.c:151 msgid "" "Internal error: invalid fun argument in rolling function, should have been " @@ -3860,7 +2898,6 @@ msgid "" msgstr "" #: frollR.c:155 frollR.c:279 nafill.c:162 shift.c:19 ->>>>>>> master msgid "fill must be a vector of length 1" msgstr "" @@ -3868,6 +2905,12 @@ msgstr "" msgid "fill must be numeric" msgstr "" +#: frollR.c:185 +msgid "" +"Internal error: invalid algo argument in rolling function, should have been " +"caught before. please report to data.table issue tracker." +msgstr "" + #: frollR.c:190 #, c-format msgid "Internal error: badaptive=%d but ik is not integer" @@ -3926,7 +2969,7 @@ msgid "%s: running in parallel for input length %, hasna %d, narm %d\n" msgstr "" #: fsort.c:111 -msgid "x must be a vector of type double currently" +msgid "x must be a vector of type 'double' currently" msgstr "" #: fsort.c:122 @@ -4212,6 +3255,10 @@ msgid "" "list column." msgstr "" +#: gsumm.c:43 +msgid "env is not an environment" +msgstr "" + #: gsumm.c:45 gsumm.c:46 gsumm.c:47 #, c-format msgid "%s is not an integer vector" @@ -4276,15 +3323,13 @@ msgstr "" msgid "%.3fs\n" msgstr "" -#: gsumm.c:345 gsumm.c:579 gsumm.c:688 gsumm.c:807 gsumm.c:952 gsumm.c:1263 -#: gsumm.c:1404 -#, c-format -msgid "%s is not meaningful for factors." +#: gsumm.c:345 +msgid "sum is not meaningful for factors." msgstr "" #: gsumm.c:349 #, c-format -msgid "This gsum (narm=%s) took ... " +msgid "This gsum took (narm=%s) ... " msgstr "" #: gsumm.c:350 gsumm.c:606 gsumm.c:693 gsumm.c:812 gsumm.c:955 gsumm.c:1005 @@ -4300,12 +3345,11 @@ msgid "" "convenience." msgstr "" -#: gsumm.c:565 gsumm.c:650 gsumm.c:794 gsumm.c:940 gsumm.c:992 gsumm.c:1073 -#: gsumm.c:1153 gsumm.c:1250 gsumm.c:1382 gsumm.c:1384 gsumm.c:1446 +#: gsumm.c:565 #, c-format msgid "" -"Type '%s' is not supported by GForce %s. Either add the prefix %s or turn " -"off GForce optimization using options(datatable.optimize=1)" +"Type '%s' not supported by GForce sum (gsum). Either add the prefix base::" +"sum(.) or turn off GForce optimization using options(datatable.optimize=1)" msgstr "" #: gsumm.c:578 @@ -4314,6 +3358,10 @@ msgid "" "you're looking for 'DT[,lapply(.SD,mean),by=,.SDcols=]'. See ?data.table." msgstr "" +#: gsumm.c:579 +msgid "mean is not meaningful for factors." +msgstr "" + #: gsumm.c:599 #, c-format msgid "Internal error: gsum returned type '%s'. typeof(x) is '%s'" @@ -4334,9 +3382,16 @@ msgstr "" msgid "Unable to allocate %d * %d bytes for si in gmean na.rm=TRUE" msgstr "" -#: gsumm.c:674 utils.c:280 +#: gsumm.c:650 #, c-format -msgid "Internal error: type '%s' not supported in %s" +msgid "" +"Type '%s' not supported by GForce mean (gmean) na.rm=TRUE. Either add the " +"prefix base::mean(.) or turn off GForce optimization using options(datatable." +"optimize=1)" +msgstr "" + +#: gsumm.c:674 +msgid "Internal error: unsupported type at the end of gmean" msgstr "" #: gsumm.c:687 @@ -4347,6 +3402,10 @@ msgid "" "likely, you may be looking for 'DT[,lapply(.SD,min),by=,.SDcols=]'" msgstr "" +#: gsumm.c:688 +msgid "min is not meaningful for factors." +msgstr "" + #: gsumm.c:717 gsumm.c:850 msgid "" "No non-missing values found in at least one group. Coercing to numeric type " @@ -4369,6 +3428,13 @@ msgstr "" msgid "Type 'complex' has no well-defined min" msgstr "" +#: gsumm.c:794 +#, c-format +msgid "" +"Type '%s' not supported by GForce min (gmin). Either add the prefix base::" +"min(.) or turn off GForce optimization using options(datatable.optimize=1)" +msgstr "" + #: gsumm.c:806 msgid "" "GForce max can only be applied to columns, not .SD or similar. To find max " @@ -4377,6 +3443,10 @@ msgid "" "likely, you may be looking for 'DT[,lapply(.SD,max),by=,.SDcols=]'" msgstr "" +#: gsumm.c:807 +msgid "max is not meaningful for factors." +msgstr "" + #: gsumm.c:930 msgid "" "No non-missing values found in at least one group. Returning '-Inf' for such " @@ -4387,6 +3457,13 @@ msgstr "" msgid "Type 'complex' has no well-defined max" msgstr "" +#: gsumm.c:940 +#, c-format +msgid "" +"Type '%s' not supported by GForce max (gmax). Either add the prefix base::" +"max(.) or turn off GForce optimization using options(datatable.optimize=1)" +msgstr "" + #: gsumm.c:951 msgid "" "GForce median can only be applied to columns, not .SD or similar. To find " @@ -4396,6 +3473,32 @@ msgid "" "by=,.SDcols=]'" msgstr "" +#: gsumm.c:952 +msgid "median is not meaningful for factors." +msgstr "" + +#: gsumm.c:992 +#, c-format +msgid "" +"Type '%s' not supported by GForce median (gmedian). Either add the prefix " +"stats::median(.) or turn off GForce optimization using options(datatable." +"optimize=1)" +msgstr "" + +#: gsumm.c:1073 +#, c-format +msgid "" +"Type '%s' not supported by GForce tail (gtail). Either add the prefix utils::" +"tail(.) or turn off GForce optimization using options(datatable.optimize=1)" +msgstr "" + +#: gsumm.c:1153 +#, c-format +msgid "" +"Type '%s' not supported by GForce head (ghead). Either add the prefix utils::" +"head(.) or turn off GForce optimization using options(datatable.optimize=1)" +msgstr "" + #: gsumm.c:1161 msgid "" "Internal error, gtail is only implemented for n=1. This should have been " @@ -4415,6 +3518,14 @@ msgid "" "please report to data.table issue tracker." msgstr "" +#: gsumm.c:1250 +#, c-format +msgid "" +"Type '%s' not supported by GForce subset `[` (gnthvalue). Either add the " +"prefix utils::head(.) or turn off GForce optimization using " +"options(datatable.optimize=1)" +msgstr "" + #: gsumm.c:1262 msgid "" "GForce var/sd can only be applied to columns, not .SD or similar. For the " @@ -4425,6 +3536,24 @@ msgid "" "to do this." msgstr "" +#: gsumm.c:1263 +msgid "var/sd is not meaningful for factors." +msgstr "" + +#: gsumm.c:1382 +#, c-format +msgid "" +"Type '%s' not supported by GForce var (gvar). Either add the prefix stats::" +"var(.) or turn off GForce optimization using options(datatable.optimize=1)" +msgstr "" + +#: gsumm.c:1384 +#, c-format +msgid "" +"Type '%s' not supported by GForce sd (gsd). Either add the prefix stats::" +"sd(.) or turn off GForce optimization using options(datatable.optimize=1)" +msgstr "" + #: gsumm.c:1403 msgid "" "GForce prod can only be applied to columns, not .SD or similar. To multiply " @@ -4433,11 +3562,22 @@ msgid "" "likely, you may be looking for 'DT[,lapply(.SD,prod),by=,.SDcols=]'" msgstr "" +#: gsumm.c:1404 +msgid "prod is not meaningful for factors." +msgstr "" + #: gsumm.c:1411 #, c-format msgid "Unable to allocate %d * %d bytes for gprod" msgstr "" +#: gsumm.c:1446 +#, c-format +msgid "" +"Type '%s' not supported by GForce prod (gprod). Either add the prefix base::" +"prod(.) or turn off GForce optimization using options(datatable.optimize=1)" +msgstr "" + #: ijoin.c:22 ijoin.c:243 msgid "" "Internal error: invalid value for 'mult'; this should have been caught " @@ -4520,15 +3660,7 @@ msgid "" "architecture greater than 64bit yet." msgstr "" -<<<<<<< HEAD -#: init.c:246 -msgid "... failed. Please forward this message to maintainer('data.table')." -msgstr "" - -#: init.c:247 -======= #: init.c:253 ->>>>>>> master #, c-format msgid "Checking NA_INTEGER [%d] == INT_MIN [%d] %s" msgstr "" @@ -4538,10 +3670,6 @@ msgstr "" msgid "Checking NA_INTEGER [%d] == NA_LOGICAL [%d] %s" msgstr "" -<<<<<<< HEAD -#: init.c:249 init.c:250 init.c:252 init.c:255 init.c:256 init.c:257 init.c:258 -#: init.c:259 init.c:260 init.c:261 -======= #: init.c:255 #, c-format msgid "Checking sizeof(int) [%d] is 4 %s" @@ -4553,9 +3681,8 @@ msgid "Checking sizeof(double) [%d] is 8 %s" msgstr "" #: init.c:258 ->>>>>>> master #, c-format -msgid "Checking sizeof(%s) [%d] is %d %s" +msgid "Checking sizeof(long long) [%d] is 8 %s" msgstr "" #: init.c:259 @@ -4568,9 +3695,6 @@ msgstr "" msgid "Checking sizeof(SEXP) [%d] == sizeof(pointer) [%d] %s" msgstr "" -<<<<<<< HEAD -#: init.c:264 -======= #: init.c:261 #, c-format msgid "Checking sizeof(uint64_t) [%d] is 8 %s" @@ -4607,7 +3731,6 @@ msgid "Checking sizeof(uint16_t) [%d] is 2 %s" msgstr "" #: init.c:270 ->>>>>>> master #, c-format msgid "Checking LENGTH(allocVector(INTSXP,2)) [%d] is 2 %s" msgstr "" @@ -4693,9 +3816,6 @@ msgstr "" msgid "'x' argument must be numeric type, or list/data.table of numeric types" msgstr "" -<<<<<<< HEAD -#: nafill.c:207 -======= #: nafill.c:159 nafill.c:190 msgid "" "Internal error: invalid type argument in nafillR function, should have been " @@ -4707,7 +3827,6 @@ msgid "nan_is_na must be TRUE or FALSE" msgstr "" #: nafill.c:206 ->>>>>>> master #, c-format msgid "%s: parallel processing of %d column(s) took %.3fs\n" msgstr "" @@ -4726,15 +3845,11 @@ msgid "" "integer between 2 and 100. Default is 50. See ?setDTtheads." msgstr "" -<<<<<<< HEAD -#: openmp-utils.c:70 -======= #: openmp-utils.c:78 msgid "'verbose' must be TRUE or FALSE" msgstr "" #: openmp-utils.c:81 ->>>>>>> master msgid "" "This installation of data.table has not been compiled with OpenMP support.\n" msgstr "" @@ -5078,8 +4193,6 @@ msgstr "" msgid "Item %d of n is NA" msgstr "" -<<<<<<< HEAD -======= #: shift.c:170 #, c-format msgid "Unsupported type '%s'" @@ -5093,164 +4206,103 @@ msgstr "" msgid "dt_win_snprintf test %d failed: %s" msgstr "" ->>>>>>> master #: subset.c:7 #, c-format msgid "Internal error: subsetVectorRaw length(ans)==%d n=%d" msgstr "" -<<<<<<< HEAD -#: subset.c:83 -======= #: subset.c:101 ->>>>>>> master #, c-format msgid "" "Internal error: column type '%s' not supported by data.table subset. All " "known types are supported so please report as bug." msgstr "" -<<<<<<< HEAD -#: subset.c:116 -======= #: subset.c:110 subset.c:134 ->>>>>>> master #, c-format msgid "Internal error. 'idx' is type '%s' not 'integer'" msgstr "" -<<<<<<< HEAD -#: subset.c:117 -======= #: subset.c:135 ->>>>>>> master #, c-format msgid "" "Internal error. 'maxArg' is type '%s' and length %d, should be an integer " "singleton" msgstr "" -<<<<<<< HEAD -#: subset.c:118 -msgid "Internal error: allowOverMax must be TRUE/FALSE" -msgstr "" - -#: subset.c:120 -======= #: subset.c:136 msgid "Internal error: allowOverMax must be TRUE/FALSE" msgstr "" #: subset.c:138 ->>>>>>> master #, c-format msgid "Internal error. max is %d, must be >= 0." msgstr "" -<<<<<<< HEAD -#: subset.c:156 -======= #: subset.c:162 #, c-format msgid "i[%d] is %d which is out of range [1,nrow=%d]" msgstr "" #: subset.c:174 ->>>>>>> master #, c-format msgid "" "Item %d of i is %d and item %d is %d. Cannot mix positives and negatives." msgstr "" -<<<<<<< HEAD -#: subset.c:166 -======= #: subset.c:184 ->>>>>>> master #, c-format msgid "Item %d of i is %d and item %d is NA. Cannot mix negatives and NA." msgstr "" -<<<<<<< HEAD -#: subset.c:202 -======= #: subset.c:220 ->>>>>>> master #, c-format msgid "" "Item %d of i is %d but there are only %d rows. Ignoring this and %d more " "like it out of %d." msgstr "" -<<<<<<< HEAD -#: subset.c:204 -======= #: subset.c:222 ->>>>>>> master #, c-format msgid "" "Item %d of i is %d which removes that item but that has occurred before. " "Ignoring this dup and %d other dups." msgstr "" -<<<<<<< HEAD -#: subset.c:218 -======= #: subset.c:236 ->>>>>>> master #, c-format msgid "Column %d is NULL; malformed data.table." msgstr "" -<<<<<<< HEAD -#: subset.c:221 -======= #: subset.c:239 ->>>>>>> master #, c-format msgid "Column %d ['%s'] is a data.frame or data.table; malformed data.table." msgstr "" -<<<<<<< HEAD -#: subset.c:226 -======= #: subset.c:244 ->>>>>>> master #, c-format msgid "" "Column %d ['%s'] is length %d but column 1 is length %d; malformed data." "table." msgstr "" -<<<<<<< HEAD -#: subset.c:258 -======= #: subset.c:260 ->>>>>>> master #, c-format -msgid "Item %d of cols is %d which is outside the range [1,ncol(x)=%d]" +msgid "Internal error. Argument 'x' to CsubsetDT is type '%s' not 'list'" msgstr "" -<<<<<<< HEAD -#: subset.c:332 -======= #: subset.c:273 #, c-format msgid "Internal error. Argument 'cols' to Csubset is type '%s' not 'integer'" msgstr "" #: subset.c:350 ->>>>>>> master msgid "" "Internal error: NULL can not be subset. It is invalid for a data.table to " "contain a NULL column." msgstr "" -<<<<<<< HEAD -#: subset.c:334 -======= #: subset.c:352 ->>>>>>> master msgid "" "Internal error: CsubsetVector is internal-use-only but has received " "negatives, zeros or out-of-range" @@ -5300,16 +4352,12 @@ msgstr "" msgid "Internal error: uniqlist has been passed length(order)==%d but nrow==%d" msgstr "" -<<<<<<< HEAD -#: uniqlist.c:148 -======= #: uniqlist.c:96 uniqlist.c:128 uniqlist.c:209 uniqlist.c:246 uniqlist.c:319 #, c-format msgid "Type '%s' not supported" msgstr "" #: uniqlist.c:149 ->>>>>>> master msgid "Input argument 'x' to 'uniqlengths' must be an integer vector" msgstr "" @@ -5318,17 +4366,13 @@ msgid "" "Input argument 'n' to 'uniqlengths' must be an integer vector of length 1" msgstr "" -<<<<<<< HEAD -#: uniqlist.c:167 uniqlist.c:264 -======= #: uniqlist.c:168 ->>>>>>> master msgid "cols must be an integer vector with length >= 1" msgstr "" #: uniqlist.c:172 #, c-format -msgid "Item %d of cols is %d which is outside the range [1,length(l)=%d]" +msgid "Item %d of cols is %d which is outside range of l [1,length(l)=%d]" msgstr "" #: uniqlist.c:175 @@ -5347,15 +4391,11 @@ msgstr "" msgid "Internal error: nrows[%d]>0 but ngrps==0" msgstr "" -<<<<<<< HEAD -#: uniqlist.c:349 -======= #: uniqlist.c:265 msgid "cols must be an integer vector of positive length" msgstr "" #: uniqlist.c:350 ->>>>>>> master msgid "x is not a logical vector" msgstr "" @@ -5368,13 +4408,10 @@ msgstr "" msgid "'x' argument must be data.table compatible" msgstr "" -<<<<<<< HEAD -======= #: utils.c:101 msgid "'check_dups' argument must be TRUE or FALSE" msgstr "" ->>>>>>> master #: utils.c:117 msgid "" "argument specifying columns is type 'double' and one or more items in it are " @@ -5383,8 +4420,7 @@ msgstr "" #: utils.c:123 #, c-format -msgid "" -"argument specifying columns received non-existing column(s): cols[%d]=%d" +msgid "argument specifying columns specify non existing column(s): cols[%d]=%d" msgstr "" #: utils.c:128 @@ -5394,7 +4430,7 @@ msgstr "" #: utils.c:133 #, c-format msgid "" -"argument specifying columns received non-existing column(s): cols[%d]='%s'" +"argument specifying columns specify non existing column(s): cols[%d]='%s'" msgstr "" #: utils.c:136 @@ -5402,11 +4438,7 @@ msgid "argument specifying columns must be character or numeric" msgstr "" #: utils.c:139 -<<<<<<< HEAD -msgid "argument specifying columns received duplicate column(s)" -======= msgid "argument specifying columns specify duplicated column(s)" ->>>>>>> master msgstr "" #: utils.c:145 @@ -5419,25 +4451,17 @@ msgstr "" msgid "%s: fill argument must be numeric" msgstr "" -<<<<<<< HEAD -#: utils.c:284 -======= #: utils.c:281 #, c-format msgid "Internal error: unsupported type '%s' passed to copyAsPlain()" msgstr "" #: utils.c:286 ->>>>>>> master #, c-format msgid "Internal error: copyAsPlain returning ALTREP for type '%s'" msgstr "" -<<<<<<< HEAD -#: utils.c:319 -======= #: utils.c:330 ->>>>>>> master #, c-format msgid "Found and copied %d column%s with a shared memory address\n" msgstr "" diff --git a/po/zh_CN.po b/po/zh_CN.po new file mode 100644 index 0000000000..57242f7044 --- /dev/null +++ b/po/zh_CN.po @@ -0,0 +1,4915 @@ +msgid "" +msgstr "" +"Project-Id-Version: data.table 1.12.5\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2020-10-17 13:11-0400\n" +"PO-Revision-Date: 2020-10-18 20:39-0400\n" +"Last-Translator: Yuhang Chen \n" +"Language-Team: Mandarin\n" +"Language: Mandarin\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: assign.c:7 +msgid "Internal error: finalizer hasn't received an ExternalPtr" +msgstr "内部错误: 结束操作(finalizer)没有收到ExternalPtr" + +#: assign.c:9 +msgid "Internal error: finalizer's ExternalPtr doesn't see names in tag" +msgstr "内部错误: 结束操作(finalizer)的ExternalPtr没有在tag中找到命名" + +#: assign.c:12 +#, c-format +msgid "Internal error: finalizer sees l=%d, tl=%d" +msgstr "内部错误: 结束操作(finalizer)检测到l=%d, tl=%d" + +#: assign.c:121 +msgid "" +".internal.selfref ptr is NULL. This is expected and normal for a data.table " +"loaded from disk. Please remember to always setDT() immediately after " +"loading to prevent unexpected behavior. If this table was not loaded from " +"disk or you've already run setDT(), please report to data.table issue " +"tracker.\n" +msgstr "" +".internal.selfref ptr为空。 这是从磁盘加载data.table的正常现象请在装载结束后" +"立刻运行setDT()操作避免发生异常行为。 如果该data.table不是从磁盘读取或已经运" +"行了setDT(), 请报告data.table异常行为到问题跟踪器(issue tracker)\n" + +#: assign.c:124 +msgid "Internal error: .internal.selfref ptr is not NULL or R_NilValue" +msgstr "内部错误: .internal.selfref ptr不为NULL或R_NilValue" + +#: assign.c:126 +msgid "Internal error: .internal.selfref tag isn't NULL or a character vector" +msgstr "内部错误: .internal.selfref ptr不为NULL或字符向量" + +#: assign.c:180 +msgid "Internal error: length(names)>0 but =0 and not NA." +msgstr "getOption('datatable.alloc')值为%d, 其必须大于等于零且不能为NA" + +#: assign.c:251 fsort.c:109 +msgid "verbose must be TRUE or FALSE" +msgstr "verbose参数必须为TRUE或FALSE" + +#: assign.c:299 +msgid "assign has been passed a NULL dt" +msgstr "赋值已经被传递给一个空的(NULL)dt" + +#: assign.c:300 +msgid "dt passed to assign isn't type VECSXP" +msgstr "传递给赋值操作的dt不是VECSXP类型" + +#: assign.c:302 +msgid "" +".SD is locked. Updating .SD by reference using := or set are reserved for " +"future use. Use := in j directly. Or use copy(.SD) as a (slow) last resort, " +"until shallow() is exported." +msgstr "" +".SD被锁定。 使用':='更新.SD操作保留将来使用对'j'直接使用':=', 或可以使用" +"copy(.SD), 直到导出shallow()" + +#: assign.c:310 +msgid "Internal error: dt passed to Cassign is not a data.table or data.frame" +msgstr "内部错误: 传递给赋值操作的dt不是data.table或data.frame类型" + +#: assign.c:314 +msgid "dt passed to assign has no names" +msgstr "传递给赋值操作的dt没有命名" + +#: assign.c:316 +#, c-format +msgid "Internal error in assign: length of names (%d) is not length of dt (%d)" +msgstr "赋值的内部错误: names的长度(%d)与dt的长度(%d)不匹配" + +#: assign.c:318 +msgid "" +"data.table is NULL; malformed. A null data.table should be an empty list. " +"typeof() should always return 'list' for data.table." +msgstr "" +"data.table为空, 格式错误,一个null的data.table应该为空的列表list即对data." +"table使用typeof()函数应该返回'list'类型" + +#: assign.c:327 +#, c-format +msgid "Assigning to all %d rows\n" +msgstr "为所有的%d行赋值\n" + +#: assign.c:332 +msgid "" +"Coerced i from numeric to integer. Please pass integer for efficiency; e.g., " +"2L rather than 2" +msgstr "将i由数值型强制转换为整数型。请直接传入整数以提高效率,如传入2L而非2" + +#: assign.c:335 +#, c-format +msgid "" +"i is type '%s'. Must be integer, or numeric is coerced with warning. If i is " +"a logical subset, simply wrap with which(), and take the which() outside the " +"loop if possible for efficiency." +msgstr "" +"i 为 '%s' 类型。i 必须为整(integer)型,或数值(numeric)型(将被自动转换成" +"整型并发出警告)。如果 i 为一个用于筛选的逻辑(logical)向量,请直接将它传给 " +"which(),且如果可能的话将 which() 放置于循环之外以保持高效。" + +#: assign.c:341 +#, c-format +msgid "i[%d] is %d which is out of range [1,nrow=%d]." +msgstr "i[%d] 为 %d 且超出了范围 [1,nrow=%d]。" + +#: assign.c:344 +#, c-format +msgid "Assigning to %d row subset of %d rows\n" +msgstr "正在为 %d 行(总数为 %d 行)进行赋值\n" + +#: assign.c:352 +#, c-format +msgid "Added %d new column%s initialized with all-NA\n" +msgstr "添加了 %d 个新列 %s 并全部初始化为 NA\n" + +#: assign.c:357 +msgid "length(LHS)==0; no columns to delete or assign RHS to." +msgstr "左手侧长度为0(length(LHS)==0);没有列可供删除或赋值给右手侧(RHS)。" + +#: assign.c:371 +msgid "" +"set() on a data.frame is for changing existing columns, not adding new ones. " +"Please use a data.table for that. data.table's are over-allocated and don't " +"shallow copy." +msgstr "" +"数据框(data.frame)的 set() 是用于修改现有列,而非添加新列。请使用 data." +"table 来添加新列。data.table 的操作是超额分配的(over-allocated)并且不进行浅" +"拷贝(shallow copy)。" + +#: assign.c:382 +msgid "" +"Coerced j from numeric to integer. Please pass integer for efficiency; e.g., " +"2L rather than 2" +msgstr "" +"将 j 从数值(numeric)型自动转换为整(integer)型。为了保持高效请直接传入整" +"型,如2L 而非 2" + +#: assign.c:385 +#, c-format +msgid "" +"j is type '%s'. Must be integer, character, or numeric is coerced with " +"warning." +msgstr "" +"j 为 '%s' 型。j 必须为整(integer)型、字符(character)型,或数值(numeric)" +"型(将被自动转换成整型并发出警告)。" + +#: assign.c:387 +msgid "" +"Can't assign to the same column twice in the same query (duplicates " +"detected)." +msgstr "在一次查询中无法对同一列赋值两次(检测出重复项)。" + +#: assign.c:388 +msgid "newcolnames is supplied but isn't a character vector" +msgstr "指定了 newcolnames 但其并非一字符串向量" + +#: assign.c:390 +#, c-format +msgid "RHS_list_of_columns == %s\n" +msgstr "RHS_list_of_columns == %s\n" + +#: assign.c:395 +#, c-format +msgid "" +"RHS_list_of_columns revised to true because RHS list has 1 item which is " +"NULL, or whose length %d is either 1 or targetlen (%d). Please unwrap RHS.\n" +msgstr "" +"RHS_list_of_columns 改为真(True),因为右手侧列表(RHS list)有一子项为空值" +"(NULL)或长度 %d 为 1 或 targetlen(%d)。请拆开右手侧。\n" + +#: assign.c:400 +#, c-format +msgid "" +"Supplied %d columns to be assigned an empty list (which may be an empty data." +"table or data.frame since they are lists too). To delete multiple columns " +"use NULL instead. To add multiple empty list columns, use list(list())." +msgstr "" +"试图将 %d 列赋值为空列表(可能为空数据、表(table)或数据框(data.frame),因" +"后两者也是列表的一种)。删除多个列时请使用空值(NULL)。添加多个空列表列" +"(list columns)时,请使用 list(list())。" + +#: assign.c:405 +#, c-format +msgid "Recycling single RHS list item across %d columns. Please unwrap RHS.\n" +msgstr "" +"回收重用(Recycling)单个右手侧(RHS)列表子项于 %d 列。请拆开右手侧。\n" + +#: assign.c:407 +#, c-format +msgid "" +"Supplied %d columns to be assigned %d items. Please see NEWS for v1.12.2." +msgstr "试图将 %2$d 项赋值给 %1$d 列。请阅读 v1.12.2 的更新信息(NEWS)。" + +#: assign.c:415 +#, c-format +msgid "" +"Item %d of column numbers in j is %d which is outside range [1,ncol=%d]. " +"set() on a data.frame is for changing existing columns, not adding new ones. " +"Please use a data.table for that." +msgstr "" +"j 中的列编号里第 %d 项是 %d,超出了有效范围 [1,ncol=%d]。数据框(data.frame)" +"的 set() 是用于修改现有列,而非添加新列。请使用 data.table 来添加新列。" + +#: assign.c:416 +#, c-format +msgid "" +"Item %d of column numbers in j is %d which is outside range [1,ncol=%d]. Use " +"column names instead in j to add new columns." +msgstr "" +"j 中的列编号里第 %d 项是 %d,超出了有效范围 [1,ncol=%d]。请在 j 中使用列名来" +"添加新列。" + +#: assign.c:421 +msgid "When deleting columns, i should not be provided" +msgstr "当删除列时,不应指定 i" + +#: assign.c:427 +#, c-format +msgid "" +"RHS of assignment to existing column '%s' is zero length but not NULL. If " +"you intend to delete the column use NULL. Otherwise, the RHS must have " +"length > 0; e.g., NA_integer_. If you are trying to change the column type " +"to be an empty list column then, as with all column type changes, provide a " +"full length RHS vector such as vector('list',nrow(DT)); i.e., 'plonk' in the " +"new column." +msgstr "" +"对已有列 '%s' 的赋值其右手侧(RHS)长度为零但并非空值(NULL)。如果想要删除列" +"请使用空值(NULL)。否则,右手侧必须长度 > 0,如 NA_integer_。如果想将该列类" +"型修改为空列表列(list column),正如所有修改列类型的操作一样,请在右手侧提供" +"一个与该列原数据等长的向量,如 vector('list',nrow(DT)),即,用新数据替换" +"(plonk)重新生成该列。" + +#: assign.c:432 +#, c-format +msgid "" +"Internal error in assign.c: length(newcolnames)=%d, length(names)=%d, coln=%d" +msgstr "assign.c 内部错误:length(newcolnames)=%d, length(names)=%d, coln=%d" + +#: assign.c:434 +#, c-format +msgid "Column '%s' does not exist to remove" +msgstr "要删除的列 '%s' 不存在" + +#: assign.c:440 +#, c-format +msgid "%d column matrix RHS of := will be treated as one vector" +msgstr "':=' 右手侧(RHS)%d 列矩阵将被视为一维向量" + +#: assign.c:444 +#, c-format +msgid "" +"Can't assign to column '%s' (type 'factor') a value of type '%s' (not " +"character, factor, integer or numeric)" +msgstr "" +"无法给因子(factor)类型列 '%s' 赋类型为 '%s' 的值(不是字符(character)、因" +"子(factor)、整数(integer)或数值(numeric)类中的一种)" + +#: assign.c:449 +#, c-format +msgid "" +"Supplied %d items to be assigned to %d items of column '%s'. If you wish to " +"'recycle' the RHS please use rep() to make this intent clear to readers of " +"your code." +msgstr "" +"试图将 %d 项赋值给 %d 项(列 '%s')。如果想'回收重用'('recycle')右手侧,请" +"使用 rep() 以将该意图清晰地表述给阅读代码的人。" + +#: assign.c:459 +msgid "" +"This data.table has either been loaded from disk (e.g. using readRDS()/" +"load()) or constructed manually (e.g. using structure()). Please run setDT() " +"or setalloccol() on it first (to pre-allocate space for new columns) before " +"assigning by reference to it." +msgstr "" +"此 data.table 是从硬盘导入(例如 readRDS()/load() )或者手动创建(例如 " +"structure() )。在通过引用的方式进行赋值前,请先运行 setDT() 或 setalloccol() " +"来为增加的列预先分配空间" + +#: assign.c:460 +#, c-format +msgid "" +"Internal error: oldtncol(%d) < oldncol(%d). Please report to data.table " +"issue tracker, including result of sessionInfo()." +msgstr "" +"内部错误: oldtncol(%d) < oldncol(%d)。 请将此问题汇报给 data.table 问题追踪" +"器,包括 sessionInfo() 的信息。" + +#: assign.c:462 +#, c-format +msgid "" +"truelength (%d) is greater than 10,000 items over-allocated (length = %d). " +"See ?truelength. If you didn't set the datatable.alloccol option very large, " +"please report to data.table issue tracker including the result of " +"sessionInfo()." +msgstr "" +"truelength (%d) 的值大于超额分配的 10000 项 (length = %d)。请查看 ?" +"truelength。如果你没有将 datatable.alloccol 设置为非常大的数值,请将此问题汇" +"报给 data.table 问题追踪器,包含 sessionInfo() 的信息" + +#: assign.c:464 +#, c-format +msgid "" +"Internal error: DT passed to assign has not been allocated enough column " +"slots. l=%d, tl=%d, adding %d" +msgstr "" +"内部错误: 传递出去赋值的 DT 没有被分配足够的列槽。 l=%d, tl=%d, 增加 %d" + +#: assign.c:466 +msgid "" +"It appears that at some earlier point, names of this data.table have been " +"reassigned. Please ensure to use setnames() rather than names<- or " +"colnames<-. Otherwise, please report to data.table issue tracker." +msgstr "" +"此 data.table 的名称在早先已经被重新赋值。请确保使用 setnames() 而不是 " +"names<- 或 colnames<- 进行赋值。如果该办法无效,请将此问题汇报给 data.table " +"问题追踪器,包含 sessionInfo() 的信息" + +#: assign.c:470 +#, c-format +msgid "Internal error: selfrefnames is ok but tl names [%d] != tl [%d]" +msgstr "内部错误: selfrefnames 正确,但 tl 的名称 [%d] != tl [%d]" + +#: assign.c:481 +msgid "" +"Internal error: earlier error 'When deleting columns, i should not be " +"provided' did not happen." +msgstr "内部错误: 前期的错误 '当删除列的时候,不应该提供参数 i ' 没有发生" + +#: assign.c:492 +#, c-format +msgid "" +"RHS for item %d has been duplicated because NAMED==%d MAYBE_SHARED==%d, but " +"then is being plonked. length(values)==%d; length(cols)==%d)\n" +msgstr "" +"因为 NAMED==%d MAYBE_SHARED==%d, 所以条目 %d 的 RHS 已经被复制,但是接下来又" +"要被替换了。length(values)==%d; length(cols)==%d)\n" + +#: assign.c:497 +#, c-format +msgid "Direct plonk of unnamed RHS, no copy. NAMED==%d, MAYBE_SHARED==%d\n" +msgstr "直接替换没有名字的 RHS,并没有复制。 NAMED==%d, MAYBE_SHARED==%d\n" + +#: assign.c:566 +#, c-format +msgid "" +"Dropping index '%s' as it doesn't have '__' at the beginning of its name. It " +"was very likely created by v1.9.4 of data.table.\n" +msgstr "" +"丢掉索引(index) '%s' 因为它的名字前面没有 '__' 。这个很可能由data.table " +"v1.9.4 创建\n" + +#: assign.c:574 +msgid "Internal error: index name ends with trailing __" +msgstr "内部错误: 索引(index)名称以 __ 结尾" + +#: assign.c:579 +msgid "Internal error: Couldn't allocate memory for s4." +msgstr "内部错误: 不能给 s4 分配内存" + +#: assign.c:590 +msgid "Internal error: Couldn't allocate memory for s5." +msgstr "内部错误: 不能给 s5 分配内存" + +#: assign.c:611 assign.c:627 +#, c-format +msgid "Dropping index '%s' due to an update on a key column\n" +msgstr " 因为一个键(key)列的更新,丢掉索引(index) '%s'\n" + +#: assign.c:620 +#, c-format +msgid "Shortening index '%s' to '%s' due to an update on a key column\n" +msgstr "因为一个键(key)列的更新,缩短索引(index) '%s' 到 '%s'\n" + +#: assign.c:650 +#, c-format +msgid "" +"Internal error: %d column numbers to delete not now in strictly increasing " +"order. No-dups were checked earlier." +msgstr "内部错误:指定 %d 删除列的序号目前并非严格升序排列。" +"重复项已于之前检查过。" + +#: assign.c:688 +#, c-format +msgid "" +"Internal error memrecycle: sourceStart=%d sourceLen=%d length(source)=%d" +msgstr "memrecycle 内部错误:sourceStart=%d sourceLen=%d length(source)=%d" + +#: assign.c:690 +#, c-format +msgid "Internal error memrecycle: start=%d len=%d length(target)=%d" +msgstr "memrecycle 内部错误:start=%d len=%d length(target)=%d" + +#: assign.c:693 +#, c-format +msgid "Internal error: recycle length error not caught earlier. slen=%d len=%d" +msgstr "内部错误: 早期未被发现的循环长度错误 slen=%d len=%d" + +#: assign.c:697 +msgid "Internal error: memrecycle has received NULL colname" +msgstr "内部错误: memrecycle 接受到的列名为 NULL " + +#: assign.c:706 +#, c-format +msgid "" +"Cannot assign 'factor' to '%s'. Factors can only be assigned to factor, " +"character or list columns." +msgstr "" +"不能将 'factor' 赋值为 '%s' 。因子类型只能赋值为因子,字符或者列表其中的列" + +#: assign.c:720 +#, c-format +msgid "" +"Assigning factor numbers to column %d named '%s'. But %d is outside the " +"level range [1,%d]" +msgstr "将列 %d 名称为 '%s' 赋值为因子。但是 %d 在层次范围[1,%d]之外" + +#: assign.c:728 +#, c-format +msgid "" +"Assigning factor numbers to column %d named '%s'. But %f is outside the " +"level range [1,%d], or is not a whole number." +msgstr "" +"将列 %d 名称为 '%s' 赋值为因子。但是 %f 在层次范围[1,%d]之外,或者不是一个完" +"整的数字" + +#: assign.c:734 +#, c-format +msgid "" +"Cannot assign '%s' to 'factor'. Factor columns can be assigned factor, " +"character, NA in any type, or level numbers." +msgstr "" +"不能将 'factor' 赋值为 '%s' 。 因子列可被赋值为因子,字符 ,NA 或者 层次数值" + +#: assign.c:755 +msgid "" +"Internal error: levels of target are either not unique or have truelength<0" +msgstr "内部错误: 目标的层次不是唯一或者长度<0" + +#: assign.c:794 +#, c-format +msgid "Unable to allocate working memory of %d bytes to combine factor levels" +msgstr "不能分配 %d 字节的工作内存来组合因子层次" + +#: assign.c:801 +msgid "Internal error: extra level check sum failed" +msgstr "内部错误: 额外的层次校验和失败" + +#: assign.c:820 +#, c-format +msgid "" +"Coercing 'character' RHS to '%s' to match the type of the target column " +"(column %d named '%s')." +msgstr "将'character' RHS 强制转换成 '%s' 来匹配目标列的类型(列 %d 名称 '%s')" + +#: assign.c:826 +#, c-format +msgid "" +"Cannot coerce 'list' RHS to 'integer64' to match the type of the target " +"column (column %d named '%s')." +msgstr "" +"不能将'list' RHS 强制转换成 'integer64' 来匹配目标列的类型(列 %d 名称 '%s')" + +#: assign.c:831 +#, c-format +msgid "" +"Coercing 'list' RHS to '%s' to match the type of the target column (column " +"%d named '%s')." +msgstr "将'list' RHS 强制转换成 '%s' 来匹配目标列的类型(列 %d 名称 '%s')" + +#: assign.c:837 +#, c-format +msgid "Zero-copy coerce when assigning '%s' to '%s' column %d named '%s'.\n" +msgstr "当 '%s' 赋值成 '%s' 列 %d 名称 '%s',进行Zero-copy强制转换。\n" + +#: assign.c:932 +#, c-format +msgid "type '%s' cannot be coerced to '%s'" +msgstr "类型 '%s' 不能强制转换成 '%s'" + +#: assign.c:1052 +msgid "" +"To assign integer64 to a character column, please use as.character() for " +"clarity." +msgstr "请使用 as.character() 把 integer64 类型的数值赋值给字符列" + +#: assign.c:1064 +#, c-format +msgid "Unsupported column type in assign.c:memrecycle '%s'" +msgstr "assign.c:memrecycle '%s' 里有不支持的列的类型" + +#: assign.c:1111 +#, c-format +msgid "Internal error: writeNA passed a vector of type '%s'" +msgstr "内部错误:writeNA 函数读取到了一个类型是'%s'的向量" + +#: assign.c:1142 +#, c-format +msgid "" +"Internal error: savetl_init checks failed (%d %d %p %p). please report to " +"data.table issue tracker." +msgstr "" +"内部错误:savetl_init的校验失败 (%d %d %p %p),请将此问题汇报给data.table 问" +"题追踪器。" + +#: assign.c:1150 +#, c-format +msgid "Failed to allocate initial %d items in savetl_init" +msgstr "不能为 savetl_init 最开始的 %d 个项分配空间" + +#: assign.c:1159 +#, c-format +msgid "" +"Internal error: reached maximum %d items for savetl. Please report to data." +"table issue tracker." +msgstr "" +"内部错误:已经达到了 savetl 能处理的子项上限 %d。请将此问题汇报给data.table问" +"题追踪器。" + +#: assign.c:1166 +#, c-format +msgid "Failed to realloc saveds to %d items in savetl" +msgstr "不能给 savetl 里的 %d 个项重新分配 saveds" + +#: assign.c:1172 +#, c-format +msgid "Failed to realloc savedtl to %d items in savetl" +msgstr "不能给savetl里的 %d 个项提供 savetl" + +#: assign.c:1195 +msgid "x must be a character vector" +msgstr "x 必须是一个字符向量" + +#: assign.c:1196 +msgid "'which' must be an integer vector" +msgstr "'which' 必须是一个整数向量" + +#: assign.c:1197 +msgid "'new' must be a character vector" +msgstr "'new' 必须是一个字符向量" + +#: assign.c:1198 +#, c-format +msgid "'new' is length %d. Should be the same as length of 'which' (%d)" +msgstr "'new' 的长度是 %d。 它的长度必须和'which' (%d)的长度一致。" + +#: assign.c:1201 +#, c-format +msgid "" +"Item %d of 'which' is %d which is outside range of the length %d character " +"vector" +msgstr "'which' 的 %d 项是 %d,这超出了 %d 字符的长度范围" + +#: between.c:12 +#, c-format +msgid "" +"Incompatible vector lengths: length(x)==%d length(lower)==%d length(upper)==" +"%d. Each should be either length 1 or the length of the longest." +msgstr "" +"向量长度不一致:length(x)==%d length(lower)==%d length(upper)==%d。每一个向量" +"要么是长度为一或者是等于最长向量的长度。" + +#: between.c:16 +msgid "incbounds must be TRUE or FALSE" +msgstr "incbounds 必须是 TRUE (真) 或者是 FALSE (假)" + +#: between.c:19 +msgid "NAbounds must be TRUE or NA" +msgstr "NAbounds 必须是 TRUE (真) 或者是 FALSE (假)" + +#: between.c:22 +msgid "check must be TRUE or FALSE" +msgstr "check 必须是 TRUE (真) 或者是 FALSE (假)" + +#: between.c:64 +#, c-format +msgid "Item %d of lower (%d) is greater than item %d of upper (%d)" +msgstr "lower (%2$d) 的 %1$d 项大于 upper (%3$d)的 %4$d 项" + +#: between.c:82 +#, c-format +msgid "between parallel processing of integer took %8.3fs\n" +msgstr "整数的并行运行时间一共花费了 %8.3fs\n" + +#: between.c:88 +msgid "x is integer64 but lower and/or upper are not." +msgstr "x 是一个64位整数但是至少在 lower 和 upper 其中有一个不是。" + +#: between.c:95 +#, c-format +msgid "" +"Item %d of lower (%) is greater than item %d of upper (%)" +msgstr "lower (%2$) 的 %1$d 项大于 upper (%4$)的 %3$d 项" + +#: between.c:112 +#, c-format +msgid "between parallel processing of integer64 took %8.3fs\n" +msgstr "64位整数的并行运行时间一共花费了 %8.3fs\n" + +#: between.c:115 +msgid "" +"x is not integer64 but lower and/or upper is integer64. Please align classes." +msgstr "" +"x 不是一个64位整数但是 lower 和 upper 中至少有一个是64位整数,请保证所有的变" +"量类型一致。" + +#: between.c:122 +#, c-format +msgid "Item %d of lower (%f) is greater than item %d of upper (%f)" +msgstr "lower (%2$f) 的 %1$d 项大于 upper (%4$f)的 %3$d 项" + +#: between.c:140 +#, c-format +msgid "between parallel processing of double with open bounds took %8.3fs\n" +msgstr "不设界的双精度浮点数的并行运行时间一共花费了 %8.3fs\n" + +#: between.c:157 +#, c-format +msgid "between parallel processing of double with closed bounds took %8.3fs\n" +msgstr "设界的双精度浮点数的并行运行时间一共花费了 %8.3fs\n" + +#: between.c:172 +#, c-format +msgid "Item %d of lower ('%s') is greater than item %d of upper ('%s')" +msgstr "lower (%2$s) 的 %1$d 项大于 upper (%4$s)的 %3$d 项" + +#: between.c:187 +#, c-format +msgid "between non-parallel processing of character took %8.3fs\n" +msgstr "字符的并行运行时间一共花费了 %8.3fs\n" + +#: between.c:190 +#, c-format +msgid "" +"Internal error: between.c unsupported type '%s' should have been caught at R " +"level" +msgstr "内部错误: between.c 不支持 '%s' 类型这个问题应该在R运行的时候被发现。" + +#: bmerge.c:48 +msgid "Internal error: icols is not integer vector" +msgstr "内部错误: icols 不是一个整数向量" + +#: bmerge.c:49 +msgid "Internal error: xcols is not integer vector" +msgstr "内部错误: xcols 不是一个整数向量" + +#: bmerge.c:51 +msgid "Internal error: icols and xcols must be non-empty integer vectors." +msgstr "内部错误: icols 不是一个整数向量" + +#: bmerge.c:52 +#, c-format +msgid "Internal error: length(icols) [%d] > length(xcols) [%d]" +msgstr "内部错误: icols[%1$d] 的长度大于 xcols[%2$d] 的长度" + +#: bmerge.c:59 +#, c-format +msgid "Internal error. icols[%d] is NA" +msgstr "内部错误: icols[%d] 是 NA, 缺失值" + +#: bmerge.c:60 +#, c-format +msgid "Internal error. xcols[%d] is NA" +msgstr "内部错误: xcols[%d] 是 NA, 缺失值" + +#: bmerge.c:61 +#, c-format +msgid "icols[%d]=%d outside range [1,length(i)=%d]" +msgstr "icols[%1$d]=%2$d 造成了空间溢出,当前范围是[1,length(i)=%3$d]" + +#: bmerge.c:62 +#, c-format +msgid "xcols[%d]=%d outside range [1,length(x)=%d]" +msgstr "xcols[%1$d]=%2$d 造成了空间溢出,当前范围是[1,length(i)=%3$d]" + +#: bmerge.c:65 +#, c-format +msgid "typeof x.%s (%s) != typeof i.%s (%s)" +msgstr "x.%1$s (%2$s) 的数据类型和 i.%3$s (%4$s) 的数据类型并不一致" + +#: bmerge.c:72 +msgid "roll is character but not 'nearest'" +msgstr "roll 是字符但并不是最近的" + +#: bmerge.c:73 +msgid "roll='nearest' can't be applied to a character column, yet." +msgstr "roll='最近的'的功能当前并不能被使用在字符列。" + +#: bmerge.c:76 +msgid "Internal error: roll is not character or double" +msgstr "内部错误: roll 不是字符或者是浮点" + +#: bmerge.c:81 +msgid "rollends must be a length 2 logical vector" +msgstr "rollends 必须是一个长度为2的逻辑向量" + +#: bmerge.c:91 uniqlist.c:271 +msgid "" +"Internal error: invalid value for 'mult'. please report to data.table issue " +"tracker" +msgstr "内部错误: 'mult' 是无效值。 请将此问题汇报给 data.table 问题追踪器。" + +#: bmerge.c:95 +msgid "" +"Internal error: opArg is not an integer vector of length equal to length(on)" +msgstr "内部错误: opArg 不是一个长度为 on 的整数向量" + +#: bmerge.c:98 +msgid "Internal error: nqgrpArg must be an integer vector" +msgstr "内部错误:nqgrpArg 必须为一个整数向量" + +#: bmerge.c:104 +msgid "Intrnal error: nqmaxgrpArg is not a positive length-1 integer vector" +msgstr "内部错误:nqmaxgrpArg不是长度为1的正整型向量" + +#: bmerge.c:113 +msgid "Internal error in allocating memory for non-equi join" +msgstr "不等值联结分配内存出现内部错误" + +#: bmerge.c:158 +msgid "Internal error: xoArg is not an integer vector" +msgstr "内部错误:xoArg不是整型向量" + +#: bmerge.c:273 bmerge.c:381 +#, c-format +msgid "" +"Internal error in bmerge_r for '%s' column. Unrecognized value op[col]=%d" +msgstr "bmerge_r 针对 '%s' 列的操作出现内部错误。无法识别值 op[col]=%d" + +#: bmerge.c:305 +#, c-format +msgid "Only '==' operator is supported for columns of type %s." +msgstr "%s 类型的列仅支持 '==' 操作符。" + +#: bmerge.c:412 +#, c-format +msgid "Type '%s' not supported for joining/merging" +msgstr "'%s' 类型不支持联结/归并" + +#: bmerge.c:470 +msgid "Internal error: xlow!=xupp-1 || xlowxuppIn" +msgstr "内部错误:xlow!=xupp-1 或 xlowxuppIn" + +#: chmatch.c:5 +#, c-format +msgid "table is type '%s' (must be 'character' or NULL)" +msgstr "table 类型为 '%s' (必须为 'character' 或 NULL)" + +#: chmatch.c:7 +msgid "Internal error: either chin or chmatchdup should be true not both" +msgstr "内部错误:chin 和 chmatchdup 不能同时为真" + +#: chmatch.c:12 +#, c-format +msgid "Internal error: length of SYMSXP is %d not 1" +msgstr "内部错误:SYMSXP的长度为 %d 而非 1" + +#: chmatch.c:19 +#, c-format +msgid "x is type '%s' (must be 'character' or NULL)" +msgstr "x 类型为 '%s' (必须为'character'或 NULL)" + +#: chmatch.c:71 +#, c-format +msgid "" +"Internal error: CHARSXP '%s' has a negative truelength (%d). Please file an " +"issue on the data.table tracker." +msgstr "" +"内部错误:CHARSXP '%s' 的 truelength (%d) 为负。请将此问题汇报给 data.table " +"问题追踪器。" + +#: chmatch.c:100 +#, c-format +msgid "" +"Failed to allocate % bytes working memory in chmatchdup: " +"length(table)=%d length(unique(table))=%d" +msgstr "" +"无法为 chmatchdup: length(table)=%2$d length(unique(table))=%3$d 分配 " +"%1$ 字节的内存空间" + +#: cj.c:89 +#, c-format +msgid "Type '%s' not supported by CJ." +msgstr "CJ 不支持 '%s' 类型" + +#: coalesce.c:5 +msgid "Internal error in coalesce.c: input is list(...) at R level" +msgstr "内部错误:coalesce.c 中 R 层面的输入为 list(...)" + +#: coalesce.c:7 +msgid "" +"Internal error in coalesce.c: argument 'inplaceArg' must be TRUE or FALSE" +msgstr "内部错误:coalesce.c 中 'inplaceArg' 参数必须为 TRUE 或 FALSE" + +#: coalesce.c:16 +msgid "" +"The first argument is a list, data.table or data.frame. In this case there " +"should be no other arguments provided." +msgstr "" +"第一个参数是一个 list, data.table 或 data.frame。当前不应该提供其他参数。" + +#: coalesce.c:32 +#, c-format +msgid "" +"Item 1 is a factor but item %d is not a factor. When factors are involved, " +"all items must be factor." +msgstr "元素1是一个因子,但元素 %d 不是。当涉及因子时,所有元素必须都为因子。" + +#: coalesce.c:34 +#, c-format +msgid "" +"Item %d is a factor but its levels are not identical to the first item's " +"levels." +msgstr "元素 %d 是一个因子,但因子水平与第一个元素因子水平不同。" + +#: coalesce.c:38 +#, c-format +msgid "" +"Item %d is a factor but item 1 is not a factor. When factors are involved, " +"all items must be factor." +msgstr "元素 %d 是一个因子,但元素1不是。当涉及因子时,所有元素必须都为因子。" + +#: coalesce.c:41 +#, c-format +msgid "" +"Item %d is type %s but the first item is type %s. Please coerce before " +"coalescing." +msgstr "" +"元素 %d 类型为 %s,但是第一个元素类型为 %s。请在 coalescing 之前强制转换类" +"型。" + +#: coalesce.c:43 +#, c-format +msgid "Item %d has a different class than item 1." +msgstr "元素 %d 与元素1类型不同。" + +#: coalesce.c:46 +#, c-format +msgid "" +"Item %d is length %d but the first item is length %d. Only singletons are " +"recycled." +msgstr "" +"元素 %d 长度为 %d,但第一个元素长度为 %d。只有长度为1的元素才会进行循环补齐。" + +#: coalesce.c:50 +msgid "coalesce copied first item (inplace=FALSE)\n" +msgstr "coalesce 复制了第一项 (inplace=FALSE)\n" + +#: coalesce.c:166 +#, c-format +msgid "Unsupported type: %s" +msgstr "不支持的类型:%s" + +#: dogroups.c:69 +msgid "Internal error: order not integer vector" +msgstr "内部错误:order 不是整型向量" + +#: dogroups.c:70 +msgid "Internal error: starts not integer" +msgstr "内部错误:starts 不是整型" + +#: dogroups.c:71 +msgid "Internal error: lens not integer" +msgstr "内部错误:lens 不是整型" + +#: dogroups.c:73 +msgid "Internal error: jiscols not NULL but o__ has length" +msgstr "内部错误:jiscols 非 NULL,但 o__ 长度不为0" + +#: dogroups.c:74 +msgid "Internal error: xjiscols not NULL but o__ has length" +msgstr "内部错误:jiscols 非 NULL,但 o__ 长度不为0" + +#: dogroups.c:75 +msgid "'env' should be an environment" +msgstr "'env' 应该是一个环境" + +#: dogroups.c:94 +#, c-format +msgid "" +"Internal error: unsupported size-0 type '%s' in column %d of 'by' should " +"have been caught earlier" +msgstr "" +"内部错误:未能被提前捕获到 'by' 中第 %2$d 列不支持类型 '%1$s' 且size-0 的问题" + +#: dogroups.c:99 +#, c-format +msgid "!length(bynames)[%d]==length(groups)[%d]==length(grpcols)[%d]" +msgstr "!length(bynames)[%d]==length(groups)[%d]==length(grpcols)[%d]" + +#: dogroups.c:121 +msgid "row.names attribute of .SD not found" +msgstr ".SD 的行名属性不存在" + +#: dogroups.c:123 +#, c-format +msgid "" +"row.names of .SD isn't integer length 2 with NA as first item; i.e., ." +"set_row_names(). [%s %d %d]" +msgstr "" +".SD 的行名不是长度为2且首个元素为 NA 的整型;例如:set_row_names(). [%s %d " +"%d]" + +#: dogroups.c:128 +msgid "length(names)!=length(SD)" +msgstr "length(names)!=length(SD)" + +#: dogroups.c:134 +#, c-format +msgid "" +"Internal error: size-0 type %d in .SD column %d should have been caught " +"earlier" +msgstr "内部错误:未能提前捕获到 .SD 中第 %2$d 列类型 %1$d size-0 的问题" + +#: dogroups.c:136 +#, c-format +msgid "Internal error: SDall %d length = %d != %d" +msgstr "内部错误: SDall %d 长度 = %d != %d" + +#: dogroups.c:144 +msgid "length(xknames)!=length(xSD)" +msgstr "length(xknames)!=length(xSD)" + +#: dogroups.c:148 +#, c-format +msgid "" +"Internal error: type %d in .xSD column %d should have been caught by now" +msgstr "内部错误:当前未能捕获到 .xSD 中第 %2$d 列类型 %1$d 的问题" + +#: dogroups.c:152 +#, c-format +msgid "length(iSD)[%d] != length(jiscols)[%d]" +msgstr "length(iSD)[%d] != length(jiscols)[%d]" + +#: dogroups.c:153 +#, c-format +msgid "length(xSD)[%d] != length(xjiscols)[%d]" +msgstr "length(xSD)[%d] != length(xjiscols)[%d]" + +#: dogroups.c:259 +#, c-format +msgid "j evaluates to type '%s'. Must evaluate to atomic vector or list." +msgstr "j的运算结果为'%s'类型。其运算结果必须为原子向量或列表。" + +#: dogroups.c:267 +msgid "" +"All items in j=list(...) should be atomic vectors or lists. If you are " +"trying something like j=list(.SD,newcol=mean(colA)) then use := by group " +"instead (much quicker), or cbind or merge afterwards." +msgstr "" +"j=list(...) 中的所有项目必须是原子向量或列表如果您试图进行 j=list(.SD," +"newcol=mean(colA)) 之类的操作请使用 := by group 代替(更快速),或事后使用 " +"cbind()、merge()" + +#: dogroups.c:276 +msgid "" +"RHS of := is NULL during grouped assignment, but it's not possible to delete " +"parts of a column." +msgstr "用 := 分组时 RHS 为 NULL但無法刪除部分列" + +#: dogroups.c:280 +#, c-format +msgid "" +"Supplied %d items to be assigned to group %d of size %d in column '%s'. The " +"RHS length must either be 1 (single values are ok) or match the LHS length " +"exactly. If you wish to 'recycle' the RHS please use rep() explicitly to " +"make this intent clear to readers of your code." +msgstr "" +"提供 %1$d 个项分配给第 '%4$s' 列中的第 %2$d 组,组的大小为 %3$d RHS 的长度必" +"须是 1(可以是单个值) 或完全符合 LHS 的长度如果您想回收(recycle) RHS,请使用 " +"rep() 向你的代码读者明确表达你的意图" + +#: dogroups.c:291 +msgid "" +"Internal error: Trying to add new column by reference but tl is full; " +"setalloccol should have run first at R level before getting to this point in " +"dogroups" +msgstr "" +"内部错误 : 尝试依照引用增加新列但 tl 已满在进入 dogroups 之前,setalloccol 应" +"该先在 R 运行" + +#: dogroups.c:312 +#, c-format +msgid "Group %d column '%s': %s" +msgstr "列 '%2$s' 第 %1$d 组 : %3$s" + +#: dogroups.c:319 +msgid "j doesn't evaluate to the same number of columns for each group" +msgstr "j 估算出的每组的列数不同" + +#: dogroups.c:353 +#, c-format +msgid "" +"Column %d of j's result for the first group is NULL. We rely on the column " +"types of the first result to decide the type expected for the remaining " +"groups (and require consistency). NULL columns are acceptable for later " +"groups (and those are replaced with NA of appropriate type and recycled) but " +"not for the first. Please use a typed empty vector instead, such as " +"integer() or numeric()." +msgstr "" +"j 的结果中第 %d 列在第 1 组中为 NULL我们依赖第 1 组的列类型去决定剩余组的类型" +"(需要一致性)空 (NULL) 列可以出现在后面的组(适当的以 NA 取代并回收)但不能是第 " +"1 组请输入空向量代替,例如 integer() 或 numeric()" + +#: dogroups.c:356 +msgid "" +"j appears to be a named vector. The same names will likely be created over " +"and over again for each group and slow things down. Try and pass a named " +"list (which data.table optimizes) or an unnamed list() instead.\n" +msgstr "" +"j 是名称向量,这可能使相同的名称不停重复创建导致速度变慢请尝试输入名称列表(较" +"适合 data.table)或是非名称列表代替\n" + +#: dogroups.c:358 +#, c-format +msgid "" +"Column %d of j is a named vector (each item down the rows is named, " +"somehow). Please remove those names for efficiency (to save creating them " +"over and over for each group). They are ignored anyway.\n" +msgstr "" +"j 的第 %d 列是名称向量(整行的项都是名称)为了效率请移除这些名称(避免在每组重复" +"创建这些名称)总之他们被忽略了\n" + +#: dogroups.c:366 +msgid "" +"The result of j is a named list. It's very inefficient to create the same " +"names over and over again for each group. When j=list(...), any names are " +"detected, removed and put back after grouping has completed, for efficiency. " +"Using j=transform(), for example, prevents that speedup (consider changing " +"to :=). This message may be upgraded to warning in future.\n" +msgstr "" +"j 的结果是名称列表,在每组不停重复创建相同的名称很没效率为了提高效率,当 " +"j=list(...) 时侦测到的所有名称会被移出,待分组完成后再放回来可以使用 " +"j=transform() 避免这种加速此讯息可能会在未来升级为警告\n" + +#: dogroups.c:378 +#, c-format +msgid "dogroups: growing from %d to %d rows\n" +msgstr "dogroups: 从 %d 列增加至 %d 列\n" + +#: dogroups.c:379 +#, c-format +msgid "dogroups: length(ans)[%d]!=ngrpcols[%d]+njval[%d]" +msgstr "dogroups: length(ans)[%d]!=ngrpcols[%d]+njval[%d]" + +#: dogroups.c:397 +#, c-format +msgid "" +"Item %d of j's result for group %d is zero length. This will be filled with " +"%d NAs to match the longest column in this result. Later groups may have a " +"similar problem but only the first is reported to save filling the warning " +"buffer." +msgstr "" +"j 的结果第 %d 项在第 %d 组中为零长度(zero length)将使用 %d 个 NA 填入以符合结" +"果中最长列的长度后面的分组也有相同问题,但只回报第一组以避免过多警告" + +#: dogroups.c:404 +#, c-format +msgid "" +"Column %d of result for group %d is type '%s' but expecting type '%s'. " +"Column types must be consistent for each group." +msgstr "" +"结果的第 %d 列在第 %d 组中是 '%s' 类别而非预期的 '%s' 类别所有组的列类别必须" +"一致" + +#: dogroups.c:406 +#, c-format +msgid "" +"Supplied %d items for column %d of group %d which has %d rows. The RHS " +"length must either be 1 (single values are ok) or match the LHS length " +"exactly. If you wish to 'recycle' the RHS please use rep() explicitly to " +"make this intent clear to readers of your code." +msgstr "" +"提供 %1$d 项给第 %3$d 組的第 %2$d 列,这组有 %4$d 行RHS長度必須為 1 (可以使用" +"單個值) 或與 LHS 長度完全匹配如果您想回收(recycle) RHS,请使用 rep() 向你的代" +"码读者明确表达你的意图" + +#: dogroups.c:427 +#, c-format +msgid "Wrote less rows (%d) than allocated (%d).\n" +msgstr "写入的行 (%d) 少于分配的 (%d)\n" + +#: dogroups.c:449 +#, c-format +msgid "Internal error: block 0 [%d] and block 1 [%d] have both run" +msgstr "内部错误 : 区块 0 [%d] 与区块 1 [%d] 都运行了" + +#: dogroups.c:451 +#, c-format +msgid "" +"\n" +" %s took %.3fs for %d groups\n" +msgstr "" +"\n" +" %s 花了 %.3fs 在 %d 个组\n" + +#: dogroups.c:453 +#, c-format +msgid " eval(j) took %.3fs for %d calls\n" +msgstr " eval(j)取%.3fs给 %d 调用\n" + +#: dogroups.c:477 +msgid "growVector passed NULL" +msgstr "growVector通过NULL" + +#: dogroups.c:497 +#, c-format +msgid "Internal error: growVector doesn't support type '%s'" +msgstr "内部错误:growVector 不支持 '%s' 类型" + +#: fastmean.c:39 +msgid "narm should be TRUE or FALSE" +msgstr "narm必须是TRUE或FALSE" + +#: fastmean.c:45 +#, c-format +msgid "fastmean was passed type %s, not numeric or logical" +msgstr "传递给 fastmean 的是 %s 类型,而不是数值或逻辑类型" + +#: fastmean.c:83 fastmean.c:111 +#, c-format +msgid "Internal error: type '%s' not caught earlier in fastmean" +msgstr "内部错误:先前fastmean没有侦测到类型 '%s' " + +#: fcast.c:78 +#, c-format +msgid "Unsupported column type in fcast val: '%s'" +msgstr "fcast val不支持的列类型:'%s'" + +#: fifelse.c:5 +msgid "Argument 'test' must be logical." +msgstr "参数'test'必须是逻辑类型。" + +#: fifelse.c:9 +msgid "S4 class objects (except nanotime) are not supported." +msgstr "不支持的S4 类对象(nanotime 除外)。" + +#: fifelse.c:28 +#, c-format +msgid "" +"'yes' is of type %s but 'no' is of type %s. Please make sure that both " +"arguments have the same type." +msgstr "'yes'是%s类型,但'no'是%s类型。请确认两个参数是同一类型。" + +#: fifelse.c:33 +msgid "" +"'yes' has different class than 'no'. Please make sure that both arguments " +"have the same class." +msgstr "'yes'的类型与'no'不同。请确认两个参数是同一类型。" + +#: fifelse.c:38 +msgid "'yes' and 'no' are both type factor but their levels are different." +msgstr "'yes'和'no'都是因子类型但他们的因子水平不同。" + +#: fifelse.c:43 +#, c-format +msgid "" +"Length of 'yes' is % but must be 1 or length of 'test' (%)." +msgstr "'yes'长度是%但长度必须是1或者等于'test'的长度 (%)。" + +#: fifelse.c:45 +#, c-format +msgid "" +"Length of 'no' is % but must be 1 or length of 'test' (%)." +msgstr "'no'长度是%但长度必须是1或者等于'test'的长度 (%)。" + +#: fifelse.c:56 +#, c-format +msgid "Length of 'na' is % but must be 1" +msgstr "'na'长度是%但必须是长度必须是1" + +#: fifelse.c:62 +#, c-format +msgid "" +"'yes' is of type %s but 'na' is of type %s. Please make sure that both " +"arguments have the same type." +msgstr "'yes'是%s类型,但'na'是%s类型。请确认两个参数是同一类型。" + +#: fifelse.c:64 +msgid "" +"'yes' has different class than 'na'. Please make sure that both arguments " +"have the same class." +msgstr "'yes'的类型与'na'不同。请确认两个参数是同一类型。" + +#: fifelse.c:68 +msgid "'yes' and 'na' are both type factor but their levels are different." +msgstr "'yes'和'na'都是因子类型但他们的因子水平不同" + +#: fifelse.c:138 fifelse.c:336 +#, c-format +msgid "Type %s is not supported." +msgstr "不支持类型 %s" + +#: fifelse.c:152 +#, c-format +msgid "" +"Received %d inputs; please supply an even number of arguments in ..., " +"consisting of logical condition, resulting value pairs (in that order). Note " +"that the default argument must be named explicitly, e.g., default=0" +msgstr "" +"接收到 %d 个输入。请向 ... 中提供偶数个参数。每一参数需包含逻辑条件判断,以及" +"对应顺序的结果值对。请注意默认参数须明确给出名字,如 default=0" + +#: fifelse.c:163 fifelse.c:203 +msgid "" +"S4 class objects (except nanotime) are not supported. Please see https://" +"github.com/Rdatatable/data.table/issues/4131." +msgstr "不支持的S4 类对象(nanotime 除外)。详见 https://" +"github.com/Rdatatable/data.table/issues/4131。" + +#: fifelse.c:174 +msgid "Length of 'default' must be 1." +msgstr "'default' 长度必须是 1。" + +#: fifelse.c:181 +#, c-format +msgid "" +"Resulting value is of type %s but 'default' is of type %s. Please make sure " +"that both arguments have the same type." +msgstr "结果为 %s 类型,然而 'default' 却为 %s 类型。请确认二者为同一类型。" + +#: fifelse.c:185 +msgid "" +"Resulting value has different class than 'default'. Please make sure that " +"both arguments have the same class." +msgstr "结果的类型与 'default' 的类型不同。请确认二者为同一类型。" + +#: fifelse.c:191 +msgid "" +"Resulting value and 'default' are both type factor but their levels are " +"different." +msgstr "结果和 'default' 均为因子类型,但其因子水平不同。" + +#: fifelse.c:206 +#, c-format +msgid "Argument #%d must be logical." +msgstr "参数 #%d 必须为逻辑类型。" + +#: fifelse.c:210 +#, c-format +msgid "" +"Argument #%d has a different length than argument #1. Please make sure all " +"logical conditions have the same length." +msgstr "参数 #%d 与参数 #1 长度不同。请确认所有逻辑条件的长度相等。" + +#: fifelse.c:215 +#, c-format +msgid "" +"Argument #%d is of type %s, however argument #2 is of type %s. Please make " +"sure all output values have the same type." +msgstr "参数 #%d 为 %s 类型,但参数 #2 为 %s 类型。请确认所有输出均为同一类型。" + +#: fifelse.c:220 +#, c-format +msgid "" +"Argument #%d has different class than argument #2, Please make sure all " +"output values have the same class." +msgstr "参数 #2 的类型与参数 #%d 的不同。请确认所有输出均为同一类型。" + +#: fifelse.c:226 +#, c-format +msgid "" +"Argument #2 and argument #%d are both factor but their levels are different." +msgstr "参数 #2 和参数 #%d 均为因子类型,但其因子水平不同。" + +#: fifelse.c:233 +#, c-format +msgid "" +"Length of output value #%d must either be 1 or length of logical condition." +msgstr "#%d 输出的长度必须为 1 或与逻辑判断条件的长度相同。" + +#: fmelt.c:18 +msgid "'x' must be an integer" +msgstr "'x'必须是整数" + +#: fmelt.c:19 +msgid "'n' must be a positive integer" +msgstr "'n'必须是正整数" + +#: fmelt.c:41 +msgid "Argument to 'which' must be logical" +msgstr "'which'的参数必须是逻辑值" + +#: fmelt.c:65 +msgid "concat: 'vec' must be a character vector" +msgstr "concat:'vec' 必须是一个字符向量" + +#: fmelt.c:66 +msgid "concat: 'idx' must be an integer vector of length >= 0" +msgstr "concat:'idx' 必须为一个长度>= 0的整数向量" + +#: fmelt.c:75 +#, c-format +msgid "" +"Internal error in concat: 'idx' must take values between 1 and length(vec); " +"1 <= idx <= %d" +msgstr "concat内部错误:'idx'必须为1到length(vec)之间的值;1 <= idx <= %d" + +#: fmelt.c:117 +#, c-format +msgid "Unknown 'measure.vars' type %s at index %d of list" +msgstr "未知'measure.vars'类型 %s,位于列表中 %d" + +#: fmelt.c:162 +#, c-format +msgid "" +"id.vars and measure.vars are internally guessed when both are 'NULL'. All " +"non-numeric/integer/logical type columns are considered id.vars, which in " +"this case are columns [%s]. Consider providing at least one of 'id' or " +"'measure' vars in future." +msgstr "" +"当'id.vars'和'measure.vars'都是NULL时,data.table会自动猜测适当值。所有非数" +"值/整数/逻辑类型列会作为'id.vars',即以下列 [%s]。以后请考虑择一指定'id." +"vars'或'measure.vars'。" + +#: fmelt.c:168 fmelt.c:233 +#, c-format +msgid "Unknown 'id.vars' type %s, must be character or integer vector" +msgstr "未知'id.vars'类型 %s,必须是字符或者整数向量(vector)" + +#: fmelt.c:173 fmelt.c:237 +msgid "One or more values in 'id.vars' is invalid." +msgstr "'id.vars'里,一或多个数值无效" + +#: fmelt.c:189 +msgid "" +"'measure.vars' is missing. Assigning all columns other than 'id.vars' " +"columns as 'measure.vars'.\n" +msgstr "" +"找不到'measure.vars'。将指定所有'id.vars'以外的所有列为'measure.vars'。\n" + +#: fmelt.c:190 +#, c-format +msgid "Assigned 'measure.vars' are [%s].\n" +msgstr "指定'measure.vars'为[%s]。\n" + +#: fmelt.c:198 +#, c-format +msgid "" +"Unknown 'measure.vars' type %s, must be character or integer vector/list" +msgstr "未知'measure.vars'类型 %s,必须是字符或者整数向量(vector)/列表(list)" + +#: fmelt.c:207 fmelt.c:253 +msgid "One or more values in 'measure.vars' is invalid." +msgstr "'measure.vars'里,一或多个数值无效" + +#: fmelt.c:225 +msgid "" +"'id.vars' is missing. Assigning all columns other than 'measure.vars' " +"columns as 'id.vars'.\n" +msgstr "找不到'id.vars'。将指定所有'measure.vars'以外的所有列为'id.vars'。\n" + +#: fmelt.c:226 +#, c-format +msgid "Assigned 'id.vars' are [%s].\n" +msgstr "指定的 'id.vars' 是 [%s].\n" + +#: fmelt.c:245 +#, c-format +msgid "Unknown 'measure.vars' type %s, must be character or integer vector" +msgstr "未知'measure.vars'类型 %s,必须是字符或者整数向量" + +#: fmelt.c:290 +msgid "" +"When 'measure.vars' is a list, 'value.name' must be a character vector of " +"length =1 or =length(measure.vars)." +msgstr "" +"当'measure.vars'是一个列表(list), 'value.name' 必须是一个长度为1或者等于" +"length(measure.vars)的字符向量" + +#: fmelt.c:291 +msgid "" +"When 'measure.vars' is either not specified or a character/integer vector, " +"'value.name' must be a character vector of length =1." +msgstr "" +"当'measure.vars'未被指定或者是一个字符/整数向量时,'value.name'必须是一个长度" +"1的字符/整数向量" + +#: fmelt.c:294 +msgid "'variable.name' must be a character/integer vector of length=1." +msgstr "'variable.name' 必须是长度1的字符/整数向量。" + +#: fmelt.c:343 +msgid "" +"Internal error: combineFactorLevels in fmelt.c expects all-character input" +msgstr "内部错误:fmelt.c里的combineFactorLevels期望输入值为全字符" + +#: fmelt.c:346 +msgid "" +"Internal error: combineFactorLevels in fmelt.c expects a character target to " +"factorize" +msgstr "内部错误:fmelt.c里的combineFactorLevels期望一个字符来分解" + +#: fmelt.c:399 +#, c-format +msgid "" +"'measure.vars' [%s] are not all of the same type. By order of hierarchy, the " +"molten data value column will be of type '%s'. All measure variables not of " +"type '%s' will be coerced too. Check DETAILS in ?melt.data.table for more on " +"coercion.\n" +msgstr "" +"'measure.vars'[%1$s] 的数据类型不完全相同。由于融合后的数据将是'%2$s'类型,所" +"以变量中不是'%3$s'类型的数将被强制转换为'%2$s'类型,更多关于强制转换的信息请" +"查看 ?melt.data.table.\n" + +#: fmelt.c:401 +#, c-format +msgid "" +"The molten data value type is a list at item %d. 'na.rm=TRUE' is ignored.\n" +msgstr "在项目%d中,融合后的数值类型是列表,参数'na.rm = TRUE'被自动忽略\n" + +#: fmelt.c:504 +#, c-format +msgid "Unknown column type '%s' for column '%s'." +msgstr "'%s'列是未知的纵列类型: '%s'" + +#: fmelt.c:528 +#, c-format +msgid "Internal error: fmelt.c:getvarcols %d %d" +msgstr "内部错误:fmelt.c : getvarcols %d %d" + +#: fmelt.c:676 +#, c-format +msgid "Unknown column type '%s' for column '%s' in 'data'" +msgstr "'data' 中的'%s'列是未知列类型:'%s'" + +#: fmelt.c:687 +msgid "Input is not of type VECSXP, expected a data.table, data.frame or list" +msgstr "输入类型不是 VECSXP,输入类型应该是 data.table,data.frame 或 list。" + +#: fmelt.c:688 +msgid "Argument 'value.factor' should be logical TRUE/FALSE" +msgstr "'value.factor' 的参数是逻辑值,必须是 TRUE 或FALSE" + +#: fmelt.c:689 +msgid "Argument 'variable.factor' should be logical TRUE/FALSE" +msgstr "'variable.factor' 的参数是逻辑值,必须是 TRUE 或FALSE" + +#: fmelt.c:690 +msgid "Argument 'na.rm' should be logical TRUE/FALSE." +msgstr "'na.rm' 的参数是逻辑值,必须是 TRUE 或 FALSE" + +#: fmelt.c:691 +msgid "Argument 'variable.name' must be a character vector" +msgstr "'variable.name' 必须是字符串类型" + +#: fmelt.c:692 +msgid "Argument 'value.name' must be a character vector" +msgstr "'value.name' 必须是字符串类型" + +#: fmelt.c:693 +msgid "Argument 'verbose' should be logical TRUE/FALSE" +msgstr "'verbose' 的参数是逻辑值,必须是 TRUE 或 FALSE" + +#: fmelt.c:697 +msgid "ncol(data) is 0. Nothing to melt. Returning original data.table." +msgstr "ncol(data)为0,返回原 data.table" + +#: fmelt.c:702 +msgid "names(data) is NULL. Please report to data.table-help" +msgstr "names(data)为NULL,请向 data.table-help 报告" + +#: forder.c:107 +#, c-format +msgid "Failed to realloc thread private group size buffer to %d*4bytes" +msgstr "无法将线程私有的组大小缓冲区重新分配为%d*4字节" + +#: forder.c:121 +#, c-format +msgid "Failed to realloc group size result to %d*4bytes" +msgstr "分配%d*4字节内存时失败。" + +#: forder.c:264 +#, c-format +msgid "" +"Logical error. counts[0]=%d in cradix but should have been decremented to 0. " +"radix=%d" +msgstr "逻辑错误:在 cradix 中的 counts[0] 应该为0,而不是%dradix=%d" + +#: forder.c:279 +msgid "Failed to alloc cradix_counts" +msgstr "分配 cradix_counts 失败" + +#: forder.c:281 +msgid "Failed to alloc cradix_tmp" +msgstr "分配 cradix_tmp 失败" + +#: forder.c:292 +#, c-format +msgid "" +"Internal error: ustr isn't empty when starting range_str: ustr_n=%d, " +"ustr_alloc=%d" +msgstr "内部错误:开始运行 range_str 时,ustr 未清空:ustr_n=%d,ustr_alloc=%d" + +#: forder.c:293 +msgid "Internal error: ustr_maxlen isn't 0 when starting range_str" +msgstr "内部错误:开始 range_str 时,ustr_maxlen 不是0" + +#: forder.c:313 +#, c-format +msgid "Unable to realloc %d * %d bytes in range_str" +msgstr "在 range_str 中,无法重新分配%d * %d字节" + +#: forder.c:331 +msgid "Failed to alloc ustr3 when converting strings to UTF8" +msgstr "将字符串转换为 UTF8 格式时,无法分配ustr3" + +#: forder.c:349 +msgid "Failed to alloc tl when converting strings to UTF8" +msgstr "将字符串转换为 UTF8 格式时,无法分配 tl" + +#: forder.c:378 +msgid "Must an integer or numeric vector length 1" +msgstr "必须是长度为1的整数或数字向量" + +#: forder.c:379 +msgid "Must be 2, 1 or 0" +msgstr "必须是2、1或者0" + +#: forder.c:413 +msgid "Unknown non-finite value; not NA, NaN, -Inf or +Inf" +msgstr "未知的取值范围,不属于 NA, NaN, -Inf 或 +Inf" + +#: forder.c:435 +msgid "" +"Internal error: input is not either a list of columns, or an atomic vector." +msgstr "内部错误:输入值既不是列表中的一列,也不是原子向量" + +#: forder.c:437 +msgid "" +"Internal error: input is an atomic vector (not a list of columns) but by= is " +"not NULL" +msgstr "" +"内部错误:输入值是一个原子向量(而不是列表中的一列),但是'by' 的参数是列表而不" +"是NULL" + +#: forder.c:439 +msgid "" +"Input is an atomic vector (not a list of columns) but order= is not a length " +"1 integer" +msgstr "" +"输入值是一个原子向量(而不是列表中的一列),但参数 order不是长度为1的整数" + +#: forder.c:441 +#, c-format +msgid "forder.c received a vector type '%s' length %d\n" +msgstr "forder.c 接收到一个类型为'%s'长度为%d的向量\n" + +#: forder.c:449 +#, c-format +msgid "forder.c received %d rows and %d columns\n" +msgstr "forder.c 接收到%d行和%d列\n" + +#: forder.c:452 +msgid "Internal error: DT is an empty list() of 0 columns" +msgstr "内部错误:DT 是一个0列的空 list" + +#: forder.c:454 +#, c-format +msgid "" +"Internal error: DT has %d columns but 'by' is either not integer or is " +"length 0" +msgstr "内部错误:DT 内部有%d列,但参数 'by' 不是整数或长度为0" + +#: forder.c:456 +#, c-format +msgid "" +"Either order= is not integer or its length (%d) is different to by='s length " +"(%d)" +msgstr "参数 order 不是整数,或者它的长度(%d)与参数 'by' 指定的长度(%d)不同" + +#: forder.c:462 +#, c-format +msgid "internal error: 'by' value %d out of range [1,%d]" +msgstr "内部错误:参数 'by' 的值%d超出[1,%d]的范围" + +#: forder.c:464 +#, c-format +msgid "Column %d is length %d which differs from length of column 1 (%d)\n" +msgstr "列%d的长度是%d,与第1列的长度(%d)不同\n" + +#: forder.c:468 +msgid "retGrp must be TRUE or FALSE" +msgstr "retGrp 的参数是逻辑值,必须是 TRUE 或 FALSE" + +#: forder.c:471 +msgid "sort must be TRUE or FALSE" +msgstr " sort 的参数是逻辑值,必须是 TRUE 或 FALSE" + +#: forder.c:474 +msgid "At least one of retGrp= or sort= must be TRUE" +msgstr "retGrp 和sort 的参数中,至少一个必须是 TRUE" + +#: forder.c:476 +msgid "na.last must be logical TRUE, FALSE or NA of length 1" +msgstr "na.last 的参数必须是逻辑值 TRUE, FALSE 或 NA " + +#: forder.c:504 forder.c:608 +#, c-format +msgid "Unable to allocate % bytes of working memory" +msgstr "无法分配%字节的工作内存" + +#: forder.c:520 +#, c-format +msgid "Item %d of order (ascending/descending) is %d. Must be +1 or -1." +msgstr "排序(ascending/descending)选项%d是%d,必须是+1 or -1" + +#: forder.c:546 +#, c-format +msgid "" +"\n" +"*** Column %d passed to forder is a date stored as an 8 byte double but no " +"fractions are present. Please consider a 4 byte integer date such as IDate " +"to save space and time.\n" +msgstr "" +"\n" +"***传递给 forder 的%d列是一个没有小数的8字节 double 类型的日期数据,请考虑使" +"用4字节的整数日期(例如IDate)以节省空间和时间\n" + +#: forder.c:562 +#, c-format +msgid "Column %d passed to [f]order is type '%s', not yet supported." +msgstr "传递给 [f]order 的第%d列为 '%s'类型,目前尚不支持。" + +#: forder.c:715 +msgid "Internal error: column not supported, not caught earlier" +msgstr "内部错误:列有不支持类型,未被前置识别" + +#: forder.c:723 +#, c-format +msgid "nradix=%d\n" +msgstr "nradix=%d\n" + +#: forder.c:729 +#, c-format +msgid "" +"Failed to allocate TMP or UGRP or they weren't cache line aligned: nth=%d" +msgstr "分配TMP或UGRP失败或缓存行不一致: nth=%d" + +#: forder.c:734 +msgid "Could not allocate (very tiny) group size thread buffers" +msgstr "无法分配(极小)块组大小的线程缓冲区" + +#: forder.c:795 +#, c-format +msgid "Timing block %2d%s = %8.3f %8d\n" +msgstr "定时块 %2d%s = %8.3f %8d\n" + +#: forder.c:798 +#, c-format +msgid "stat[%03d]==%20\n" +msgstr "stat[%03d]==%20\n" + +#: forder.c:1054 +#, c-format +msgid "Failed to allocate parallel counts. my_n=%d, nBatch=%d" +msgstr "分配并行计算失败,my_n=%d, nBatch=%d" + +#: forder.c:1163 +#, c-format +msgid "Unable to allocate TMP for my_n=%d items in parallel batch counting" +msgstr "无法分配TMP给并行批处理计算的 my_n=%d 项" + +#: forder.c:1270 +msgid "Internal error: issorted 'by' must be NULL or integer vector" +msgstr "内部错误:issorted 参数 'by' 须为 NULL 或一个整数向量" + +#: forder.c:1274 forder.c:1324 +#, c-format +msgid "issorted 'by' [%d] out of range [1,%d]" +msgstr "issorted 参数 'by' 的值%d超出[1,%d]的范围" + +#: forder.c:1279 +msgid "is.sorted does not work on list columns" +msgstr "is.sorted 不支持列表(list)列" + +#: forder.c:1311 forder.c:1341 forder.c:1375 +#, c-format +msgid "type '%s' is not yet supported" +msgstr "类型 '%s' 目前不支持" + +#: forder.c:1388 +msgid "x must be either NULL or an integer vector" +msgstr "x 必须为空值或整型向量" + +#: forder.c:1390 +msgid "nrow must be integer vector length 1" +msgstr "nrow 必须为长度为1的整型向量" + +#: forder.c:1392 +#, c-format +msgid "nrow==%d but must be >=0" +msgstr "nrow==%d 但是必须 >=0" + +#: forder.c:1409 +msgid "x must be type 'double'" +msgstr "x 必须为浮点数类型" + +#: frank.c:9 +#, c-format +msgid "Internal error. Argument 'x' to Cdt_na is type '%s' not 'list'" +msgstr "内部错误:参数 'x' 关于 Cdt_na 是 '%s' 类型而不是 'list' 类型" + +#: frank.c:10 +#, c-format +msgid "Internal error. Argument 'cols' to Cdt_na is type '%s' not 'integer'" +msgstr "内部错误:参数 'cols' 关于 Cdt_na 是 '%s' 类型而不是 'integer' 类型" + +#: frank.c:14 frank.c:155 subset.c:276 +#, c-format +msgid "Item %d of 'cols' is %d which is outside 1-based range [1,ncol(x)=%d]" +msgstr "'cols' 的 %d 项为 %d ,超出1的范围 [1,ncol(x)=%d]" + +#: frank.c:24 frank.c:164 +#, c-format +msgid "" +"Column %d of input list x is length %d, inconsistent with first column of " +"that item which is length %d." +msgstr "输入列表x的列 %d 长度为 %d,不同于第一列的该项长度为 %d" + +#: frank.c:63 frank.c:211 transpose.c:88 +#, c-format +msgid "Unsupported column type '%s'" +msgstr "不支持的列类型 '%s'" + +#: frank.c:82 +msgid "" +"Internal error: invalid ties.method for frankv(), should have been caught " +"before. please report to data.table issue tracker" +msgstr "" +"内部错误:对于 frankv()的无效值ties.method,应在之前被捕获。请报告给 data." +"table issue tracker" + +#: frank.c:139 +#, c-format +msgid "Internal error: unknown ties value in frank: %d" +msgstr "内部错误:frank中有未知的ties值 %d" + +#: frank.c:150 +#, c-format +msgid "Internal error. Argument 'x' to CanyNA is type '%s' not 'list'" +msgstr "内部错误:参数 'x' 关于 CanyNA 是 '%s' 类型而不是'list'类型" + +#: frank.c:151 +#, c-format +msgid "Internal error. Argument 'cols' to CanyNA is type '%s' not 'integer'" +msgstr "内部错误:参数 'cols' 关于 CanyNA 是 '%s' 类型而不是'integer'类型" + +#: fread.c:104 +#, c-format +msgid "" +"Internal error in line %d of fread.c, please report on data.table GitHub: " +msgstr "fread.c中%d行出现内部错误,请在 data.table 的 GitHub中提交报告:" + +#: fread.c:147 +#, c-format +msgid "System error %d unmapping view of file\n" +msgstr "系统错误 %d 取消映射文件视图\n" + +#: fread.c:150 +#, c-format +msgid "System errno %d unmapping file: %s\n" +msgstr "系统错误 %d 取消映射文件: %s\n" + +#: fread.c:210 +#, c-format +msgid "Internal error: NUMTYPE(%d) > nLetters(%d)" +msgstr "内部错误:NUMTYPE(%d) > nLetters(%d)" + +#: fread.c:435 +#, c-format +msgid "Unable to allocate %s of contiguous virtual RAM. %s allocation." +msgstr "无法分配 %s 的连续虚拟内存。 %s 已分配。" + +#: fread.c:440 +#, c-format +msgid "Avoidable %.3f seconds. %s time to copy.\n" +msgstr "可避免的 %.3f 秒。 %s 复制用时\n" + +#: fread.c:441 +#, c-format +msgid " File copy in RAM took %.3f seconds.\n" +msgstr " 内存上的文件复制耗时 %.3f 秒\n" + +#: fread.c:1249 +msgid "" +"Previous fread() session was not cleaned up properly. Cleaned up ok at the " +"beginning of this fread() call.\n" +msgstr "之前的会话fread()未正确清理。在当前 fread() 会话开始前清理好\n" + +#: fread.c:1252 +msgid "[01] Check arguments\n" +msgstr "[01] 参数检查\n" + +#: fread.c:1259 +#, c-format +msgid " Using %d threads (omp_get_max_threads()=%d, nth=%d)\n" +msgstr " 使用 %d 线程 (omp_get_max_threads()=%d, nth=%d)\n" + +#: fread.c:1267 +msgid "" +"Internal error: NAstrings is itself NULL. When empty it should be pointer to " +"NULL." +msgstr "内部错误:NAstrings 自身为空值。当清空该项会指向NULL空值" + +#: fread.c:1285 +#, c-format +msgid "freadMain: NAstring <<%s>> has whitespace at the beginning or end" +msgstr "freadMain: NAstring <<%s>> 在开始或者结束处有空白" + +#: fread.c:1290 +#, c-format +msgid "" +"freadMain: NAstring <<%s>> is recognized as type boolean, this is not " +"permitted." +msgstr "freadMain: NAstring <<%s>> 被识别为布尔型,这是不允许" + +#: fread.c:1301 +msgid " No NAstrings provided.\n" +msgstr " 未提供 NAstrings \n" + +#: fread.c:1303 +msgid " NAstrings = [" +msgstr " NAstrings = [" + +#: fread.c:1306 +msgid "]\n" +msgstr "]\n" + +#: fread.c:1308 +msgid " One or more of the NAstrings looks like a number.\n" +msgstr " 一个或多个 NAstrings 类似数值\n" + +#: fread.c:1310 +msgid " None of the NAstrings look like numbers.\n" +msgstr " 没有 NAstrings 为数值\n" + +#: fread.c:1312 +#, c-format +msgid " skip num lines = %\n" +msgstr " 跳过行数为 %\n" + +#: fread.c:1313 +#, c-format +msgid " skip to string = <<%s>>\n" +msgstr " 跳转至 string = <<%s>>\n" + +#: fread.c:1314 +#, c-format +msgid " show progress = %d\n" +msgstr " 显示进程 %d\n" + +#: fread.c:1315 +#, c-format +msgid " 0/1 column will be read as %s\n" +msgstr " 0/1 列被读取为 %s\n" + +#: fread.c:1323 +#, c-format +msgid "sep == quote ('%c') is not allowed" +msgstr "sep == quote ('%c') 不被允许" + +#: fread.c:1324 +msgid "dec='' not allowed. Should be '.' or ','" +msgstr "dec='' 不允许,应该为 '.' 或者 ','" + +#: fread.c:1325 +#, c-format +msgid "sep == dec ('%c') is not allowed" +msgstr "sep == dec ('%c') 不允许" + +#: fread.c:1326 +#, c-format +msgid "quote == dec ('%c') is not allowed" +msgstr "quote == dec ('%c') 不允许" + +#: fread.c:1343 +msgid "[02] Opening the file\n" +msgstr "[02] 打开文件\n" + +#: fread.c:1346 +msgid "" +" `input` argument is provided rather than a file name, interpreting as raw " +"text to read\n" +msgstr "提供 `input` 参数而非文件名,理解为原始的文本读取\n" + +#: fread.c:1350 +msgid "Internal error: last byte of character input isn't \\0" +msgstr "内部错误:字符输入的最后一个字节不是 \\0" + +#: fread.c:1353 +#, c-format +msgid " Opening file %s\n" +msgstr " 打开文件 %s\n" + +#: fread.c:1357 +#, c-format +msgid "file not found: %s" +msgstr "文件未找到: %s" + +#: fread.c:1361 +#, c-format +msgid "Opened file ok but couldn't obtain its size: %s" +msgstr "文件能够打开但无法获知其大小:%s" + +#: fread.c:1364 fread.c:1392 +#, c-format +msgid "File is empty: %s" +msgstr "文件是空的:%s" + +#: fread.c:1365 fread.c:1393 +#, c-format +msgid " File opened, size = %s.\n" +msgstr " 文件已打开,大小为 %s.\n" + +#: fread.c:1382 +#, c-format +msgid "File not found: %s" +msgstr "文件没有找到:%s" + +#: fread.c:1388 +#, c-format +msgid "Unable to open file after %d attempts (error %d): %s" +msgstr "经过 %d 次尝试后仍无法打开文件(错误 %d):%s" + +#: fread.c:1390 +#, c-format +msgid "GetFileSizeEx failed (returned 0) on file: %s" +msgstr "GetFileSizeEx 未能成功执行(返回值为0)于文件:%s" + +#: fread.c:1395 +#, c-format +msgid "This is Windows, CreateFileMapping returned error %d for file %s" +msgstr "现在在Windows下,CreateFileMapping 返回错误 %d 于文件 %s" + +#: fread.c:1402 +#, c-format +msgid "" +"Opened %s file ok but could not memory map it. This is a %dbit process. %s." +msgstr "能够打开文件 %s 但不能创建内存映射。这是一个 %d 位进程。 %s." + +#: fread.c:1403 +msgid "Please upgrade to 64bit" +msgstr "请升级到64位" + +#: fread.c:1403 +msgid "There is probably not enough contiguous virtual memory available" +msgstr "多半没有足够的连续虚拟内存" + +#: fread.c:1406 +msgid " Memory mapped ok\n" +msgstr " 内存映射正常\n" + +#: fread.c:1408 +msgid "" +"Internal error: Neither `input` nor `filename` are given, nothing to read." +msgstr "" +"内部错误:既没有`input`(输入)也没有`filename`(文件名),没有什么可供读入。" + +#: fread.c:1425 +msgid "[03] Detect and skip BOM\n" +msgstr "[03] 检测并跳过字节顺序标记(BOM)\n" + +#: fread.c:1429 +msgid "" +" UTF-8 byte order mark EF BB BF found at the start of the file and " +"skipped.\n" +msgstr "在文件头发现了UTF-8 字节顺序标记(BOM)EF BB BF 并已跳过。\n" + +#: fread.c:1434 +msgid "" +"GB-18030 encoding detected, however fread() is unable to decode it. Some " +"character fields may be garbled.\n" +msgstr "检测到GB-18030 编码,但fread() 未能解码。某些 字符字段可能有乱码。\n" + +#: fread.c:1437 +msgid "" +"File is encoded in UTF-16, this encoding is not supported by fread(). Please " +"recode the file to UTF-8." +msgstr "文件编码是UTF-16,fread()不支持此编码。请 将文件转换为UTF-8。" + +#: fread.c:1442 +#, c-format +msgid " Last byte(s) of input found to be %s and removed.\n" +msgstr " 发现输入的最后字节是 %s 并已去除。\n" + +#: fread.c:1445 +msgid "Input is empty or only contains BOM or terminal control characters" +msgstr "输入是空的或只有字节顺序标记(BOM)或终端控制字符" + +#: fread.c:1452 +msgid "[04] Arrange mmap to be \\0 terminated\n" +msgstr "[04] 设定mmap为 \\0 终止\n" + +#: fread.c:1459 +msgid "" +" No \\n exists in the file at all, so single \\r (if any) will be taken as " +"one line ending. This is unusual but will happen normally when there is no " +"\\r either; e.g. a single line missing its end of line.\n" +msgstr "" +" 文件中完全没有换行符\\n,所以单个 \\r(如果有的话)将被当成一行的结束。这不" +"太常见但如果没有\\r 的话属于正常;例如单个行没有行尾结束符。\n" + +#: fread.c:1460 +msgid "" +" \\n has been found in the input and different lines can end with different " +"line endings (e.g. mixed \\n and \\r\\n in one file). This is common and " +"ideal.\n" +msgstr "" +" 输入中有\\n 并且不同行可以有不同的 行尾结束符(如在一个文件中混合使用 \\n " +"和\\r\\n)。这很常见也是理想情况。\n" + +#: fread.c:1484 +#, c-format +msgid "" +" File ends abruptly with '%c'. Final end-of-line is missing. Using cow page " +"to write 0 to the last byte.\n" +msgstr "" +" 文件突然中止于 '%c'。没有最后一个行尾结束符。正使用写时复制页(cow, copy-" +"on-write)写入 0 到最后一个字节。\n" + +#: fread.c:1490 +msgid "" +"This file is very unusual: it ends abruptly without a final newline, and " +"also its size is a multiple of 4096 bytes. Please properly end the last row " +"with a newline using for example 'echo >> file' to avoid this " +msgstr "" +"这个文件非常不正常:它突然中止而没有最后的换行,并且其大小是4096 字节的整数" +"倍。请用一个换行(例如 'echo >> file')来恰当地结束最后一行以避免此错误" + +#: fread.c:1491 +#, c-format +msgid " File ends abruptly with '%c'. Copying file in RAM. %s copy.\n" +msgstr " 文件突然中止于 '%c'。正在从内存中复制文件。%s 复制。\n" + +#: fread.c:1525 +msgid "[05] Skipping initial rows if needed\n" +msgstr "[05] 如需要的话跳过起始行\n" + +#: fread.c:1531 +#, c-format +msgid "" +"skip='%s' not found in input (it is case sensitive and literal; i.e., no " +"patterns, wildcards or regex)" +msgstr "" +"在输入中没有发现 skip='%s' (这里大小写敏感并需要是字面形式,也就是说不能使用" +"模式,适配符或正则表达式)" + +#: fread.c:1537 +#, c-format +msgid "" +"Found skip='%s' on line %. Taking this to be header row or first row " +"of data.\n" +msgstr "在行 %2$ 发现了 skip='%1$s'。将此当做表头或数据的第一行。\n" + +#: fread.c:1550 +#, c-format +msgid " Skipped to line % in the file" +msgstr " 跳到文件的第 % 行" + +#: fread.c:1551 +#, c-format +msgid "skip=% but the input only has % line%s" +msgstr "skip=% 但输入只有 % 行 %s" + +#: fread.c:1560 +msgid "" +"Input is either empty, fully whitespace, or skip has been set after the last " +"non-whitespace." +msgstr "输入是空,或全部为空白,或跳过设置是在最后一个非空白字符之后。" + +#: fread.c:1562 +#, c-format +msgid " Moved forward to first non-blank line (%d)\n" +msgstr " 前移到第一个非空行 (%d)\n" + +#: fread.c:1563 +#, c-format +msgid " Positioned on line %d starting: <<%s>>\n" +msgstr " 定位到行 %d 开始于: <<%s>>\n" + +#: fread.c:1581 +msgid "[06] Detect separator, quoting rule, and ncolumns\n" +msgstr "[06] 检测分隔符,引用规则,以及列数\n" + +#: fread.c:1585 +msgid " sep='\\n' passed in meaning read lines as single character column\n" +msgstr " sep='\\n' 设定意味着将把所有行读作一个字符列\n" + +#: fread.c:1604 +msgid " Detecting sep automatically ...\n" +msgstr " 自动检测分隔符中 ...\n" + +#: fread.c:1611 +#, c-format +msgid " Using supplied sep '%s'\n" +msgstr " 使用提供的分隔符 '%s'\n" + +#: fread.c:1645 +#, c-format +msgid " with %d fields using quote rule %d\n" +msgstr " 对 %d 个字段使用引用规则 %d\n" + +#: fread.c:1695 +#, c-format +msgid " with %d lines of %d fields using quote rule %d\n" +msgstr " 对 %d 行的 %d 字段使用引用规则 %d\n" + +#: fread.c:1702 +msgid "" +" No sep and quote rule found a block of 2x2 or greater. Single column " +"input.\n" +msgstr " 没有分隔符并且引用规则发现了一个大于或等于2x2的区块。输入是单列。\n" + +#: fread.c:1718 +msgid "" +"Single column input contains invalid quotes. Self healing only effective " +"when ncol>1" +msgstr "单列输入包含了不合法的引用。自我修正只有在列数大于1(ncol>1)时才有效" + +#: fread.c:1723 +#, c-format +msgid "" +"Found and resolved improper quoting in first %d rows. If the fields are not " +"quoted (e.g. field separator does not appear within any field), try quote=" +"\"\" to avoid this warning." +msgstr "" +"在前 %d 行中发现并修正了不合适的引号用法。如果字段没有加引号(例如字段间隔符" +"没有在任何字段内出现),可以尝试使用 quote=\"\" 来避免此警告。" + +#: fread.c:1739 +#, c-format +msgid "" +"Internal error: ncol==%d line==%d after detecting sep, ncol and first line" +msgstr "内部错误:检测分隔符,列数和首行后,ncol==%d line==%d" + +#: fread.c:1742 +#, c-format +msgid "Internal error: first line has field count %d but expecting %d" +msgstr "内部错误:首行有%d个字段,但应该有%d个" + +#: fread.c:1744 +#, c-format +msgid "" +" Detected %d columns on line %d. This line is either column names or first " +"data row. Line starts as: <<%s>>\n" +msgstr "检测到第%2$d行有%1$d列。该行为列名或数据集首行。该行以<<%3$s>>开始\n" + +#: fread.c:1746 +#, c-format +msgid " Quote rule picked = %d\n" +msgstr "标点符号规则 = %d\n" + +#: fread.c:1747 +#, c-format +msgid " fill=%s and the most number of columns found is %d\n" +msgstr "fill=%s 且找到的最大列数为 %d\n" + +#: fread.c:1753 +msgid "" +"This file is very unusual: it's one single column, ends with 2 or more end-" +"of-line (representing several NA at the end), and is a multiple of 4096, too." +msgstr "" +"该文件极为特殊,仅有一列数据,在结尾处包含多个行结束标记(表示多个空值),且" +"长度为4096的整数倍。" + +#: fread.c:1754 +#, c-format +msgid " Copying file in RAM. %s\n" +msgstr "正在将文件拷贝到RAM。%s\n" + +#: fread.c:1760 +msgid "" +" 1-column file ends with 2 or more end-of-line. Restoring last eol using " +"extra byte in cow page.\n" +msgstr "" +"该文件包含一列数据,存在多个行结束标记(表示多个空值)。正在使用写时复制页" +"(cow, copy-on-write)额外的字节恢复最后一个标记.\n" + +#: fread.c:1779 +msgid "" +"[07] Detect column types, good nrow estimate and whether first row is column " +"names\n" +msgstr "[07] 检测列类型,估计行数以及首行是否为列名\n" + +#: fread.c:1780 +#, c-format +msgid " 'header' changed by user from 'auto' to %s\n" +msgstr " 用户已将'header'(列名)从 'auto' 改为 %s\n" + +#: fread.c:1784 +#, c-format +msgid "Failed to allocate 2 x %d bytes for type and tmpType: %s" +msgstr "为 %2$s 类型分配 2 x %1$d bytes失败" + +#: fread.c:1805 +#, c-format +msgid " Number of sampling jump points = %d because " +msgstr "采样跳点数 = %d 因为" + +#: fread.c:1806 +#, c-format +msgid "nrow limit (%) supplied\n" +msgstr "指定了nrow 的最大值 (%) \n" + +#: fread.c:1807 +msgid "jump0size==0\n" +msgstr "jump0size==0\n" + +#: fread.c:1808 +#, c-format +msgid "" +"(% bytes from row 1 to eof) / (2 * % jump0size) == " +"%\n" +msgstr "" +"(从首行到结束共 % bytes) / (2 * % jump0size) == %\n" + +#: fread.c:1846 +#, c-format +msgid "" +" A line with too-%s fields (%d/%d) was found on line %d of sample jump %d. " +"%s\n" +msgstr "第%5$d个跳点所找到的第%4$d行,该行字段过于%1$s(%2$d/%3$d). %6$s\n" + +#: fread.c:1847 +msgid "few" +msgstr "少" + +#: fread.c:1847 +msgid "many" +msgstr "多" + +#: fread.c:1847 +msgid "" +"Most likely this jump landed awkwardly so type bumps here will be skipped." +msgstr "很有可能这一跳点的位置并不合适,因此此处的类型转换将被跳过。" + +#: fread.c:1873 +#, c-format +msgid " Type codes (jump %03d) : %s Quote rule %d\n" +msgstr " 类型码(跳点 %03d) : %s 引用规则 %d\n" + +#: fread.c:1886 +#, c-format +msgid "" +" 'header' determined to be true due to column %d containing a string on row " +"1 and a lower type (%s) in the rest of the %d sample rows\n" +msgstr "" +" 'header' 参数设为真,原因是第%1$d列首行包含字符串,并且在样本中的另外%3$d行" +"包含有较底层的数据类型(%2$s)\n" + +#: fread.c:1898 +msgid "" +"Internal error: row before first data row has the same number of fields but " +"we're not using it." +msgstr "内部错误:数据首行的前一行包含相同数量的字段但不会用到该行。" + +#: fread.c:1899 +msgid "" +"Internal error: ch!=pos after counting fields in the line before the first " +"data row." +msgstr "内部错误:对数据首行前一行的字段计数后,ch不等于pos" + +#: fread.c:1900 +#, c-format +msgid "" +"Types in 1st data row match types in 2nd data row but previous row has %d " +"fields. Taking previous row as column names." +msgstr "" +"数据第一行的类型与第二行相匹配,但是之前的行有 %d 个字段。故将第一行数据的前" +"一行作为列名" + +#: fread.c:1903 +#, c-format +msgid "" +"Detected %d column names but the data has %d columns (i.e. invalid file). " +"Added %d extra default column name%s\n" +msgstr "" +"检测到 %d 个列名,然而数据共有 %d 列(文件不合法)。添加了 %d 个额外列名%s\n" + +#: fread.c:1904 +msgid "" +" for the first column which is guessed to be row names or an index. Use " +"setnames() afterwards if this guess is not correct, or fix the file write " +"command that created the file to create a valid file." +msgstr "" +"作为第一列,并被用于猜测行名或索引。若上述猜测不正确,可在后续使用setnames()" +"进行修改,或修复用于生成该文件的文件写入命令以生成有效的文件。" + +#: fread.c:1904 +msgid "s at the end." +msgstr "到结尾处" + +#: fread.c:1906 +msgid "" +"Internal error: fill=true but there is a previous row which should already " +"have been filled." +msgstr "内部错误:参数fill=true,但是在此之前有一行应当已经被填充。" + +#: fread.c:1907 +#, c-format +msgid "" +"Detected %d column names but the data has %d columns. Filling rows " +"automatically. Set fill=TRUE explicitly to avoid this warning.\n" +msgstr "" +"检测到%d个列名,但数据共有%d列。已经自动填充。设置参数fill=TRUE以屏蔽此警" +"告。\n" + +#: fread.c:1911 +#, c-format +msgid "Failed to realloc 2 x %d bytes for type and tmpType: %s" +msgstr "为 %2$s 类型重新分配 2 x %1$d bytes失败" + +#: fread.c:1931 +#, c-format +msgid "" +" 'header' determined to be %s because there are%s number fields in the " +"first and only row\n" +msgstr " 参数'header' 被设置为%s, 因为唯一的一行包含 %s 个字段\n" + +#: fread.c:1931 +msgid " no" +msgstr "0" + +#: fread.c:1934 +msgid "" +" 'header' determined to be true because all columns are type string and a " +"better guess is not possible\n" +msgstr "参数 'header' 被设置为true,因为所有列类型均为字符串\n" + +#: fread.c:1936 +msgid "" +" 'header' determined to be false because there are some number columns and " +"those columns do not have a string field at the top of them\n" +msgstr "参数 'header' 被设置为false,因为部分字段的首行不为字符串\n" + +#: fread.c:1952 +#, c-format +msgid " Type codes (first row) : %s Quote rule %d\n" +msgstr " 类型码(第一行) : %s 引用规则 %d\n" + +#: fread.c:1961 +#, c-format +msgid "" +" All rows were sampled since file is small so we know nrow=% " +"exactly\n" +msgstr " 文件太小,全部行均被采样到,所以 nrow=%\n" + +#: fread.c:1973 fread.c:1980 +msgid " =====\n" +msgstr " =====\n" + +#: fread.c:1974 +#, c-format +msgid "" +" Sampled % rows (handled \\n inside quoted fields) at %d jump " +"points\n" +msgstr " 已使用了 %2$d个跳点抽样 %1$ 行(处理了字段间的分隔符\\n)\n" + +#: fread.c:1975 +#, c-format +msgid "" +" Bytes from first data row on line %d to the end of last row: %\n" +msgstr " 从第一个数据行(%d)到最后一行的字节: %\n" + +#: fread.c:1976 +#, c-format +msgid " Line length: mean=%.2f sd=%.2f min=%d max=%d\n" +msgstr "文件每行长度的统计量:均值=%.2f,标准差=%.2f,最小值=%d ,最大值=%d\n" + +#: fread.c:1977 +#, c-format +msgid " Estimated number of rows: % / %.2f = %\n" +msgstr "估计数据共有 % / %.2f = % 行\n" + +#: fread.c:1978 +#, c-format +msgid "" +" Initial alloc = % rows (% + %d%%) using bytes/" +"max(mean-2*sd,min) clamped between [1.1*estn, 2.0*estn]\n" +msgstr "" +"为 % 行 (% + %d%%)分配初始内存,大小为字节数/max(mean-2*sd," +"min),并确保该数值落于区间[1.1*estn, 2.0*estn]中\n" + +#: fread.c:1982 +#, c-format +msgid "Internal error: sampleLines(%) > allocnrow(%)" +msgstr "内部错误:sampleLines(%) > allocnrow(%)" + +#: fread.c:1986 +#, c-format +msgid " Alloc limited to lower nrows=% passed in.\n" +msgstr " 分配被限制在输入的更小的 nrows=% 值上。\n" + +#: fread.c:1998 +msgid "[08] Assign column names\n" +msgstr "[08] 指定列名\n" + +#: fread.c:2006 +#, c-format +msgid "Unable to allocate %d*%d bytes for column name pointers: %s" +msgstr "无法分配 %d*%d 字节给列名指针: %s" + +#: fread.c:2028 +#, c-format +msgid "Internal error: reading colnames ending on '%c'" +msgstr "内部错误:读取列名终止于 '%c'" + +#: fread.c:2046 +msgid "[09] Apply user overrides on column types\n" +msgstr "[09] 使用用户指定的列类型\n" + +#: fread.c:2050 +msgid " Cancelled by user: userOverride() returned false." +msgstr " 用户已取消:userOverride() 返回 false。" + +#: fread.c:2060 +#, c-format +msgid "Failed to allocate %d bytes for size array: %s" +msgstr "无法分配 %d 字节给 size 数组:%s" + +#: fread.c:2067 +#, c-format +msgid "" +"Attempt to override column %d%s%.*s%s of inherent type '%s' down to '%s' " +"ignored. Only overrides to a higher type are currently supported. If this " +"was intended, please coerce to the lower type afterwards." +msgstr "" +"试图覆盖第 %d 列 %s%.*s%s,将内部类型 '%s' 降级为 '%s' 的操作被忽略。只支持将" +"列类型升为更高阶的类型。如果确定此操作,请完成之后再转换类型。" + +#: fread.c:2082 +#, c-format +msgid " After %d type and %d drop user overrides : %s\n" +msgstr " 经过 %d 类型和 %d 丢弃用户覆盖:%s\n" + +#: fread.c:2090 +msgid "[10] Allocate memory for the datatable\n" +msgstr "[10] 分配内存给 datatable\n" + +#: fread.c:2091 +#, c-format +msgid " Allocating %d column slots (%d - %d dropped) with % rows\n" +msgstr " 正在分配 %d 列位置(%d - %d 已丢弃),% 行\n" + +#: fread.c:2145 +#, c-format +msgid "Buffer size % is too large\n" +msgstr "缓冲长度 % 过大\n" + +#: fread.c:2148 +msgid "[11] Read the data\n" +msgstr "[11] 读取数据\n" + +#: fread.c:2151 +#, c-format +msgid " jumps=[%d..%d), chunk_size=%, total_size=%\n" +msgstr " jumps=[%d..%d),chunk_size=%,total_size=%\n" + +#: fread.c:2163 +#, c-format +msgid "Internal error: Master thread is not thread 0 but thread %d.\n" +msgstr "内部错误:主线程并非线程0而是线程%d\n" + +#: fread.c:2371 +#, c-format +msgid "" +"Column %d (\"%.*s\") bumped from '%s' to '%s' due to <<%.*s>> on row " +"%\n" +msgstr "" +"第 %d 列(\"%.*s\") 发生了从 '%s' 到 '%s' 的类型转换,由于 <<%.*s>> 出现在第 " +"% 行\n" + +#: fread.c:2421 +#, c-format +msgid "" +"Internal error: invalid head position. jump=%d, headPos=%p, thisJumpStart=" +"%p, sof=%p" +msgstr "内部错误:head 位置无效。jump=%d, headPos=%p, thisJumpStart=%p, sof=%p" + +#: fread.c:2494 +#, c-format +msgid "" +" Too few rows allocated. Allocating additional % rows (now nrows=" +"%) and continue reading from jump %d\n" +msgstr "" +" 分配的行数太少。正在分配额外的 % 行(当前 nrows=%),并从跳" +"跃 %d 继续读取\n" + +#: fread.c:2501 +#, c-format +msgid " Restarting team from jump %d. nSwept==%d quoteRule==%d\n" +msgstr " 从跳跃 %d 重启组。nSwept==%d quoteRule==%d\n" + +#: fread.c:2521 +#, c-format +msgid " %d out-of-sample type bumps: %s\n" +msgstr " %d 样本外类型变更:%s\n" + +#: fread.c:2557 +#, c-format +msgid "" +"Read % rows x %d columns from %s file in %02d:%06.3f wall clock " +"time\n" +msgstr "读取 % 行 x %d 列,从 %s 文件(时钟时间 %02d:%06.3f)\n" + +#: fread.c:2564 +msgid "[12] Finalizing the datatable\n" +msgstr "[12] 最后定型 datatable\n" + +#: fread.c:2565 +msgid " Type counts:\n" +msgstr " 类型数量:\n" + +#: fread.c:2567 +#, c-format +msgid "%10d : %-9s '%c'\n" +msgstr "%10d : %-9s '%c'\n" + +#: fread.c:2583 +#, c-format +msgid "Discarded single-line footer: <<%s>>" +msgstr "丢弃末尾行:<<%s>>" + +#: fread.c:2588 +#, c-format +msgid "" +"Stopped early on line %. Expected %d fields but found %d. Consider " +"fill=TRUE and comment.char=. First discarded non-empty line: <<%s>>" +msgstr "" +"在第 % 行提前终止。预期有 %d 个字段但只找到 %d 个。可以考虑设置 " +"fill=TRUE 和 comment.char=。 首个丢弃的非空行:<<%s>>" + +#: fread.c:2594 +#, c-format +msgid "" +"Found and resolved improper quoting out-of-sample. First healed line " +"%: <<%s>>. If the fields are not quoted (e.g. field separator does " +"not appear within any field), try quote=\"\" to avoid this warning." +msgstr "" +"发现并修复了样本外的错误引号。首次在第 % 行修复:<<%s>>。如果这些字段" +"不在引号内(例如:字段间隔符没有在任何一个字段中出现),尝试用 quote=\"\" 来" +"避免该警告。" + +#: fread.c:2598 +msgid "=============================\n" +msgstr "=============================\n" + +#: fread.c:2600 +#, c-format +msgid "%8.3fs (%3.0f%%) Memory map %.3fGB file\n" +msgstr "%8.3fs (%3.0f%%) 内存映射 %.3fGB 文件\n" + +#: fread.c:2601 +#, c-format +msgid "%8.3fs (%3.0f%%) sep=" +msgstr "%8.3fs (%3.0f%%) sep=" + +#: fread.c:2603 +#, c-format +msgid " ncol=%d and header detection\n" +msgstr " ncol=%d 和表头检测\n" + +#: fread.c:2604 +#, c-format +msgid "%8.3fs (%3.0f%%) Column type detection using % sample rows\n" +msgstr "%8.3fs (%3.0f%%) 列类型检测基于 % 个样本行\n" + +#: fread.c:2606 +#, c-format +msgid "" +"%8.3fs (%3.0f%%) Allocation of % rows x %d cols (%.3fGB) of which " +"% (%3.0f%%) rows used\n" +msgstr "" +"%8.3fs (%3.0f%%) % 行 x %d 列 (%.3fGB) 的分配中已使用 % " +"(%3.0f%%) 行\n" + +#: fread.c:2610 +#, c-format +msgid "" +"%8.3fs (%3.0f%%) Reading %d chunks (%d swept) of %.3fMB (each chunk %d rows) " +"using %d threads\n" +msgstr "" +"%8.3fs (%3.0f%%) 正在读取 %d 个块 (%d 已扫描) of %.3fMB (每个块 %d 行) 使用 " +"%d 个线程\n" + +#: fread.c:2612 +#, c-format +msgid "" +" + %8.3fs (%3.0f%%) Parse to row-major thread buffers (grown %d times)\n" +msgstr " + %8.3fs (%3.0f%%) 解析到行处理线程的缓冲区(已增长 %d 次)\n" + +#: fread.c:2613 +#, c-format +msgid " + %8.3fs (%3.0f%%) Transpose\n" +msgstr " + %8.3fs (%3.0f%%) 转置\n" + +#: fread.c:2614 +#, c-format +msgid " + %8.3fs (%3.0f%%) Waiting\n" +msgstr " + %8.3fs (%3.0f%%) 正在等待\n" + +#: fread.c:2615 +#, c-format +msgid "" +"%8.3fs (%3.0f%%) Rereading %d columns due to out-of-sample type exceptions\n" +msgstr "%8.3fs (%3.0f%%) 正在重读 %d 列,由于样本外类型异常\n" + +#: fread.c:2617 +#, c-format +msgid "%8.3fs Total\n" +msgstr "%8.3fs 总计\n" + +#: freadR.c:86 +msgid "" +"Internal error: freadR input not a single character string: a filename or " +"the data itself. Should have been caught at R level." +msgstr "" +"内部错误:freadR 输入的不是单个字符串:文件名或者数据文本。该错误本应在 R 中" +"被捕获。" + +#: freadR.c:94 +msgid "" +"Input contains a \\n or is \")\". Taking this to be text input (not a " +"filename)\n" +msgstr "输入中包含 \\n 或者是 \")\"。输入将被当做数据文本(而非文件名)\n" + +#: freadR.c:97 +msgid "Input contains no \\n. Taking this to be a filename to open\n" +msgstr "输入中不包含 \\n。输入将被当做文件名打开。\n" + +#: freadR.c:103 +msgid "" +"Internal error: freadR sep not a single character. R level catches this." +msgstr "内部错误:freadR sep 不是单个字符。R 中应该捕获此错误。" + +#: freadR.c:107 +msgid "" +"Internal error: freadR dec not a single character. R level catches this." +msgstr "内部错误:freadR dec 不是单个字符。R 中应该捕获此错误。" + +#: freadR.c:114 +msgid "quote= must be a single character, blank \"\", or FALSE" +msgstr "quote= 必须是单个字符,空白 \"\",或者 FALSE" + +#: freadR.c:144 +msgid "Internal error: skip not integer or string in freadR.c" +msgstr "内部错误:freadR.c 中 skip 非整数或字符串" + +#: freadR.c:147 +#, c-format +msgid "Internal error: NAstringsArg is type '%s'. R level catches this" +msgstr "内部错误:NAstringsArg是'%s'数据类型.R中能够捕获这个信息" + +#: freadR.c:160 +#, c-format +msgid "nThread(%d)<1" +msgstr "nThread(%1$d)<1(线程数(%1$d)小于1)" + +#: freadR.c:168 +msgid "'integer64' must be a single character string" +msgstr "'64整数型'必须是单个字符串" + +#: freadR.c:176 +#, c-format +msgid "" +"Invalid value integer64='%s'. Must be 'integer64', 'character', 'double' or " +"'numeric'" +msgstr "" +"64位整数型有效值='%s'.必须是'64位整数型','字符串','双精度浮点型'或者'数值" +"型'" + +#: freadR.c:184 +msgid "Use either select= or drop= but not both." +msgstr "select=和drop=不可同时使用" + +#: freadR.c:187 +msgid "" +"select= is type list for specifying types in select=, but colClasses= has " +"been provided as well. Please remove colClasses=." +msgstr "" +"select=是用于在select=中指定类型的类型列表,但是还提供了colClasses=。请删除" +"colClasses=。" + +#: freadR.c:189 +msgid "" +"select= is type list but has no names; expecting list(type1=cols1, " +"type2=cols2, ...)" +msgstr "" +"select =是类型列表,但没有名称; 期望列表(type1 = cols1,type2 = " +"cols2,...)" + +#: freadR.c:196 +msgid "" +"select= is a named vector specifying the columns to select and their types, " +"but colClasses= has been provided as well. Please remove colClasses=." +msgstr "" +"select =是一个命名向量,用于指定要选择的列及其类型,但是还提供了colClasses " +"=。 请删除colClasses =。" + +#: freadR.c:204 freadR.c:370 +msgid "colClasses is type list but has no names" +msgstr "colClasses是类型列表,但没有名称" + +#: freadR.c:214 +#, c-format +msgid "encoding='%s' invalid. Must be 'unknown', 'Latin-1' or 'UTF-8'" +msgstr "encoding ='%s'无效。 必须为'未知','Latin-1'或'UTF-8'" + +#: freadR.c:237 +#, c-format +msgid "Column name '%s' (%s) not found" +msgstr "找不到列名'%s'(%s)" + +#: freadR.c:239 +#, c-format +msgid "%s is NA" +msgstr "%s是缺失值" + +#: freadR.c:241 +#, c-format +msgid "%s is %d which is out of range [1,ncol=%d]" +msgstr "%s是%d,超出范围[1,ncol =%d]" + +#: freadR.c:255 +msgid "Internal error: typeSize[CT_BOOL8_N] != 1" +msgstr "内部错误:类型大小[CT_BOOL8_N]不等于1" + +#: freadR.c:256 +msgid "Internal error: typeSize[CT_STRING] != 1" +msgstr "内部错误:类型大小[CT_STRING]不等于1" + +#: freadR.c:290 +#, c-format +msgid "" +"Column name '%s' not found in column name header (case sensitive), skipping." +msgstr "在列名标题中找不到列名'%s'(区分大小写),正在跳过。" + +#: freadR.c:300 +#, c-format +msgid "" +"Column number %d (select[%d]) is negative but should be in the range [1,ncol=" +"%d]. Consider drop= for column exclusion." +msgstr "" +"列号%d(select [%d])为负,但应在[1,ncol =%d]范围内。考虑drop=用于排除列。" + +#: freadR.c:301 +#, c-format +msgid "" +"select = 0 (select[%d]) has no meaning. All values of select should be in " +"the range [1,ncol=%d]." +msgstr "" +"select=0(select[%d])没有意义。select的所有值都应在[1,ncol=%d]范围内。" + +#: freadR.c:302 +#, c-format +msgid "" +"Column number %d (select[%d]) is too large for this table, which only has %d " +"columns." +msgstr "对于此表(仅包含%d列,)列号%d(select [%d])太大。" + +#: freadR.c:303 +#, c-format +msgid "Column number %d ('%s') has been selected twice by select=" +msgstr "列号%d('%s')已由select =选择两次" + +#: freadR.c:326 +#, c-format +msgid "" +"colClasses= is an unnamed vector of types, length %d, but there are %d " +"columns in the input. To specify types for a subset of columns, you can use " +"a named vector, list format, or specify types using select= instead of " +"colClasses=. Please see examples in ?fread." +msgstr "" +"colClasses =是类型为%d的类型的未命名向量,但是有%d输入中的列。要为列的子集指" +"定类型,可以使用命名向量,列表格式或使用select=而不是colClasses=。请参阅'?" +"fread'中的示例。" + +#: freadR.c:346 +msgid "Internal error: selectInts is NULL but selectColClasses is true" +msgstr "内部错误:selectInts为NULL,但selectColClasses为true" + +#: freadR.c:348 +msgid "" +"Internal error: length(selectSxp)!=length(colClassesSxp) but " +"selectColClasses is true" +msgstr "" +"内部错误:length(select xp)!=length(colClasses xp),但select ColClasses" +"为true" + +#: freadR.c:368 +#, c-format +msgid "colClasses is type '%s' but should be list or character" +msgstr "colClasses是类型'%s',但应该是列表或字符" + +#: freadR.c:392 +#, c-format +msgid "Column name '%s' (colClasses[[%d]][%d]) not found" +msgstr "找不到列名'%s'(colClasses[[%d]][%d])" + +#: freadR.c:394 +#, c-format +msgid "colClasses[[%d]][%d] is NA" +msgstr "colClasses[[%d]][%d]是NA" + +#: freadR.c:398 +#, c-format +msgid "" +"Column %d ('%s') appears more than once in colClasses. The second time is " +"colClasses[[%d]][%d]." +msgstr "" +"Column %d ('%s')在colClasses中出现了多次。第二次是colClasses[[%d]][%d]." + +#: freadR.c:410 +#, c-format +msgid "Column number %d (colClasses[[%d]][%d]) is out of range [1,ncol=%d]" +msgstr "列号%d(colClasses[[%d]][%d])超出范围[1,ncol=%d]" + +#: freadR.c:626 +#, c-format +msgid "Field size is 1 but the field is of type %d\n" +msgstr "字段大小为1,但字段类型为%d \n" + +#: freadR.c:635 +#, c-format +msgid "Internal error: unexpected field of size %d\n" +msgstr "内部错误:大小为%d 的意外字段\n" + +#: freadR.c:703 +#, c-format +msgid "%s" +msgstr "%s" + +#: froll.c:14 froll.c:223 froll.c:407 +#, c-format +msgid "%s: window width longer than input vector, returning all NA vector\n" +msgstr "%s:窗口宽度比输入向量长,返回所有NA向量\n" + +#: froll.c:32 froll.c:240 froll.c:456 +#, c-format +msgid "%s: align %d, shift answer by %d\n" +msgstr "%s:对齐%d,将答案移位%d\n" + +#: froll.c:39 froll.c:247 frolladaptive.c:19 frolladaptive.c:214 +#, c-format +msgid "%s: processing algo %u took %.3fs\n" +msgstr "%s: 处理算法%u用了%.3fs\n" + +#: froll.c:48 froll.c:251 +#, c-format +msgid "%s: running for input length %, window %d, hasna %d, narm %d\n" +msgstr "" +"%s: 正在并行运行, 输入长度 (input length) %, 窗口 (window) %d, hasna " +"%d, narm %d\n" + +#: froll.c:68 froll.c:78 froll.c:169 froll.c:271 froll.c:281 froll.c:362 +#: frolladaptive.c:58 frolladaptive.c:147 frolladaptive.c:247 +#: frolladaptive.c:326 +#, c-format +msgid "" +"%s: hasNA=FALSE used but NA (or other non-finite) value(s) are present in " +"input, use default hasNA=NA to avoid this warning" +msgstr "" +"%s:使用了hasNA = FALSE,但输入中存在NA(或其他非限定性)值,请使用默认的" +"hasNA=NA以避免此警告" + +#: froll.c:71 froll.c:173 froll.c:274 froll.c:366 frolladaptive.c:61 +#: frolladaptive.c:151 frolladaptive.c:250 frolladaptive.c:330 +#, c-format +msgid "" +"%s: NA (or other non-finite) value(s) are present in input, re-running with " +"extra care for NAs\n" +msgstr "%s:输入中存在NA(或非限定值),请格外注意NA值并重新运行\n" + +#: froll.c:81 froll.c:284 +#, c-format +msgid "" +"%s: NA (or other non-finite) value(s) are present in input, skip non-NA " +"attempt and run with extra care for NAs\n" +msgstr "%s: NA (或其他非有限长度值) 出现在输入中, 跳过非NA的输入并当心NA值\n" + +#: froll.c:137 froll.c:335 +#, c-format +msgid "" +"%s: running in parallel for input length %, window %d, hasna %d, " +"narm %d\n" +msgstr "" +"%s: 正在并行运行, 输入长度 (input length) %, 窗口 (window) %d, hasna " +"%d, narm %d\n" + +#: froll.c:175 froll.c:368 frolladaptive.c:153 frolladaptive.c:332 +#, c-format +msgid "" +"%s: NA (or other non-finite) value(s) are present in input, na.rm was FALSE " +"so in 'exact' implementation NAs were handled already, no need to re-run\n" +msgstr "" +"%s: NA (或其他非有限长度值) 出现在输入中, na.rm 为 FALSE 因此在'exact'实现" +"中, NA值已经被处理, 不需要重新运行\n" + +#: froll.c:424 +#, c-format +msgid "%s: results from provided FUN are not length 1" +msgstr "%s: 所提供的函数 (FUN) 的结果长度不为1" + +#: froll.c:431 +#, c-format +msgid "" +"%s: results from provided FUN are not of type double, coercion from integer " +"or logical will be applied on each iteration\n" +msgstr "" +"%s: 所提供的函数 (FUN) 的结果不是双精度 (double) 类型, 对整数或逻辑值的类型转" +"换会在每个循环中执行\n" + +#: froll.c:434 +#, c-format +msgid "%s: results from provided FUN are not of type double" +msgstr "%s: 所提供的函数 (FUN) 的结果不是双精度 (double) 类型" + +#: froll.c:463 +#, c-format +msgid "%s: took %.3fs\n" +msgstr "%s: 使用了 %.3fs\n" + +#: frollR.c:15 +msgid "x must be of type numeric or logical" +msgstr "x 必须是数值或者逻辑类型" + +#: frollR.c:26 +msgid "x must be list, data.frame or data.table of numeric or logical types" +msgstr "" +"x 必须是列表 (list), 或由数值或者逻辑类型组成的数据框 (data.frame 或 data." +"table)" + +#: frollR.c:47 frollR.c:264 +msgid "n must be non 0 length" +msgstr "n 必须不是0长度" + +#: frollR.c:50 +msgid "adaptive must be TRUE or FALSE" +msgstr "adaptive 必须是 TRUE 或者 FALSE" + +#: frollR.c:58 +msgid "n must be integer, list is accepted for adaptive TRUE" +msgstr "n 必须是整数, 或者当adaptive TRUE时也可以是列表" + +#: frollR.c:65 frollR.c:256 frollR.c:259 +msgid "n must be integer" +msgstr "n 必须是整数" + +#: frollR.c:72 +msgid "n must be positive integer values (> 0)" +msgstr "n 必须是正整数 (> 0)" + +#: frollR.c:81 frollR.c:93 +msgid "n must be integer vector or list of integer vectors" +msgstr "n 必须是整数向量 或者由整数向量组成的列表" + +#: frollR.c:104 gsumm.c:342 gsumm.c:577 gsumm.c:686 gsumm.c:805 gsumm.c:950 +#: gsumm.c:1261 gsumm.c:1402 uniqlist.c:351 +msgid "na.rm must be TRUE or FALSE" +msgstr "na.rm 必须是 TRUE 或者 FALSE" + +#: frollR.c:107 +msgid "hasNA must be TRUE, FALSE or NA" +msgstr "hasNA 必须是 TRUE, FALSE 或者 NA" + +#: frollR.c:109 +msgid "" +"using hasNA FALSE and na.rm TRUE does not make sense, if you know there are " +"NA values use hasNA TRUE, otherwise leave it as default NA" +msgstr "" +"同时使用 hasNA FALSE 和 na.rm TRUE 没有意义, 如果明确有NA值, 那就用 hasNA " +"TRUE, 在其他情况可以让它保留默认值NA" + +#: frollR.c:119 frollR.c:275 +msgid "" +"Internal error: invalid align argument in rolling function, should have been " +"caught before. please report to data.table issue tracker." +msgstr "" +"内部错误: 在 rolling 函数内无效的 align 参数, 理应在更早阶段排除请向data." +"table issue tracker报告" + +#: frollR.c:122 +msgid "" +"using adaptive TRUE and align argument different than 'right' is not " +"implemented" +msgstr "同时使用 adaptive TRUE 和不是 'right' 的align参数还未能实现" + +#: frollR.c:126 frollR.c:297 types.c:64 +#, c-format +msgid "%s: allocating memory for results %dx%d\n" +msgstr "%s: 正在为结果 %dx%d 分配内存\n" + +#: frollR.c:135 +msgid "" +"adaptive rolling function can only process 'x' having equal length of " +"elements, like data.table or data.frame; If you want to call rolling " +"function on list having variable length of elements call it for each field " +"separately" +msgstr "" +"adaptive rolling 函数只能处理长度同为的 'x', 比如 data.table 或数据框; 如果想" +"在含有不同长度元素的列表上执行 rolling函数, 需要分开单独地在每一项上面执行." + +#: frollR.c:137 +msgid "" +"length of integer vector(s) provided as list to 'n' argument must be equal " +"to number of observations provided in 'x'" +msgstr "'n' 列表中整数向量的长度必须等于 'x' 中的观察数量" + +#: frollR.c:151 +msgid "" +"Internal error: invalid fun argument in rolling function, should have been " +"caught before. please report to data.table issue tracker." +msgstr "" +"内部错误: 在 rolling 函数中无效的 fun 参数, 理应在更早阶段排除请向data.table " +"issue tracker报告" + +#: frollR.c:155 frollR.c:279 nafill.c:162 shift.c:19 +msgid "fill must be a vector of length 1" +msgstr "fill 必须是长度为1的向量" + +#: frollR.c:169 frollR.c:292 +msgid "fill must be numeric" +msgstr "fill 必须是数值型" + +#: frollR.c:185 +msgid "" +"Internal error: invalid algo argument in rolling function, should have been " +"caught before. please report to data.table issue tracker." +msgstr "" +"内部错误: 在 rolling 函数内无效的 algo 参数, 理应在更早阶段排除请向data." +"table issue tracker报告" + +#: frollR.c:190 +#, c-format +msgid "Internal error: badaptive=%d but ik is not integer" +msgstr "内部错误: badaptive=%d 但是 ik 不是整数" + +#: frollR.c:198 +#, c-format +msgid "" +"%s: %d column(s) and %d window(s), if product > 1 then entering parallel " +"execution\n" +msgstr "%s: %d column(s) 和 %d window(s), 如果 product > 1 则进入并行执行\n" + +#: frollR.c:200 +#, c-format +msgid "" +"%s: %d column(s) and %d window(s), not entering parallel execution here " +"because algo='exact' will compute results in parallel\n" +msgstr "" +"%s: %d column(s) 和 %d window(s), 未能进入并行执行,因为 algo='exact' 会并行计" +"算结果\n" + +#: frollR.c:219 +#, c-format +msgid "Internal error: Unknown sfun value in froll: %d" +msgstr "内部错误: 在 froll: %d 中未知的 sfun 值" + +#: frollR.c:227 frollR.c:329 +#, c-format +msgid "%s: processing of %d column(s) and %d window(s) took %.3fs\n" +msgstr "%s: 处理 %d column(s), 和 %d window(s) 用掉 %.3fs\n" + +#: frollR.c:238 +msgid "internal error: 'fun' must be a function" +msgstr "内部错误: 'fun' 必须是一个函数" + +#: frollR.c:240 +msgid "internal error: 'rho' should be an environment" +msgstr "内部错误: 'rho' 应该为一个环境 (environment)" + +#: frolladaptive.c:29 frolladaptive.c:218 +#, c-format +msgid "%s: running for input length %, hasna %d, narm %d\n" +msgstr "%s: 正在运行, 输入长度 %, hasna %d, narm %d\n" + +#: frolladaptive.c:35 frolladaptive.c:224 +#, c-format +msgid "%s: Unable to allocate memory for cumsum" +msgstr "%s: 无法为 cumsum 分配内存" + +#: frolladaptive.c:71 frolladaptive.c:260 +#, c-format +msgid "%s: Unable to allocate memory for cum NA counter" +msgstr "%s: 无法为 cum NA counter 分配内存" + +#: frolladaptive.c:114 frolladaptive.c:298 +#, c-format +msgid "%s: running in parallel for input length %, hasna %d, narm %d\n" +msgstr "%s: 正在并行运行, 输入长度 %, hasna %d, narm %d\n" + +#: fsort.c:111 +msgid "x must be a vector of type 'double' currently" +msgstr "x 目前必须是双精度 ('double') 类型的向量" + +#: fsort.c:122 +#, c-format +msgid "nth=%d, nBatch=%d\n" +msgstr "nth=%d, nBatch=%d\n" + +#: fsort.c:156 +#, c-format +msgid "Range = [%g,%g]\n" +msgstr "Range = [%g,%g]\n" + +#: fsort.c:157 +msgid "Cannot yet handle negatives." +msgstr "目前无法处理负值。" + +#: fsort.c:170 +#, c-format +msgid "maxBit=%d; MSBNbits=%d; shift=%d; MSBsize=%d\n" +msgstr "maxBit=%d; MSBNbits=%d; shift=%d; MSBsize=%d\n" + +#: fsort.c:173 +msgid "Unable to allocate working memory" +msgstr "无法分配工作内存" + +#: fsort.c:177 +#, c-format +msgid "" +"counts is %dMB (%d pages per nBatch=%d, batchSize=%, lastBatchSize=" +"%)\n" +msgstr "" +"counts为%dMB (每个nBatch中的%d页=%d, batchSize=%, lastBatchSize=" +"%)\n" + +#: fsort.c:231 +msgid "Internal error: counts[nBatch-1][MSBsize-1] != length(x)" +msgstr "内部错误:counts[nBatch-1][MSBsize-1] != length(x)" + +#: fsort.c:247 +msgid "Top 5 MSB counts: " +msgstr "前5个MSB counts:" + +#: fsort.c:247 +#, c-format +msgid "% " +msgstr "% " + +#: fsort.c:247 fwrite.c:702 +msgid "\n" +msgstr "\n" + +#: fsort.c:248 +#, c-format +msgid "Reduced MSBsize from %d to " +msgstr "MSBsize 从 %d 减少到" + +#: fsort.c:252 +#, c-format +msgid "%d by excluding 0 and 1 counts\n" +msgstr "%d 通过排除0和1的counts\n" + +#: fsort.c:309 +#, c-format +msgid "%d: %.3f (%4.1f%%)\n" +msgstr "%d: %.3f (%4.1f%%)\n" + +#: fwrite.c:572 +#, c-format +msgid "deflate input stream: %p %d %p %d\n" +msgstr "deflate (压缩) 输入数据流:%p %d %p %d\n" + +#: fwrite.c:575 +#, c-format +msgid "" +"deflate returned %d with stream->total_out==%d; Z_FINISH==%d, Z_OK==%d, " +"Z_STREAM_END==%d\n" +msgstr "deflate (压缩) 返回 %d,stream->total_out==%d; Z_FINISH==%d, Z_OK==%d, " +"Z_STREAM_END==%d\n" + +#: fwrite.c:613 +#, c-format +msgid "buffMB=%d outside [1,1024]" +msgstr "buffMB=%d 在[1,1024]之外" + +#: fwrite.c:620 +#, c-format +msgid "" +"eol must be 1 or more bytes (usually either \\n or \\r\\n) but is length %d" +msgstr "eol必须是1或更多的字节(通常是either\\n 或 \\r\\n)但是长度为%d" + +#: fwrite.c:623 +msgid "Column writers: " +msgstr "数据写入: " + +#: fwrite.c:625 fwrite.c:627 fwrite.c:629 +#, c-format +msgid "%d " +msgstr "%d " + +#: fwrite.c:628 +msgid "... " +msgstr "... " + +#: fwrite.c:631 +#, c-format +msgid "" +"\n" +"args.doRowNames=%d args.rowNames=%d doQuote=%d args.nrow=% args.ncol=" +"%d eolLen=%d\n" +msgstr "" +"\n" +"args.doRowNames=%d args.rowNames=%d doQuote=%d args.nrow=% args.ncol=" +"%d eolLen=%d\n" + +#: fwrite.c:664 +#, c-format +msgid "Internal error: type %d has no max length method implemented" +msgstr "内部错误:%d type 没有实施最大长度的方法" + +#: fwrite.c:671 +#, c-format +msgid "maxLineLen=%. Found in %.3fs\n" +msgstr "maxLineLen=%. 在%.3fs中发现\n" + +#: fwrite.c:691 +#, c-format +msgid "" +"%s: '%s'. Failed to open existing file for writing. Do you have write " +"permission to it? Is this Windows and does another process such as Excel " +"have it open?" +msgstr "" +"%s: '%s'. 无法打开一斤存在的文件进行写入.你是否对该文件有写入权限?这是" +"Windows系统?是否有Excel之类的进程已经打开了该文件?" + +#: fwrite.c:692 +#, c-format +msgid "" +"%s: '%s'. Unable to create new file for writing (it does not exist already). " +"Do you have permission to write here, is there space on the disk and does " +"the path exist?" +msgstr "" +"%s: '%s'. 无法创建新的文件进行写入(文件不存在)你是否对此有写入权限?磁盘上" +"是否有空间以及路径是否存在?" + +#: fwrite.c:700 +#, c-format +msgid "Writing bom (%s), yaml (%d characters) and column names (%s) ... " +msgstr "正在写入bom (%s), yaml (%d characters) 和 column names (%s) ..." + +#: fwrite.c:713 +#, c-format +msgid "Unable to allocate %d MiB for header: %s" +msgstr "无法为header: %2$s分配%1$d MiB" + +#: fwrite.c:741 fwrite.c:803 +msgid "Can't allocate gzip stream structure" +msgstr "无法分配gzip的流结构" + +#: fwrite.c:743 fwrite.c:752 +#, c-format +msgid "z_stream for header (%d): " +msgstr "header (%d) 的 z_stream:" + +#: fwrite.c:748 +#, c-format +msgid "Unable to allocate %d MiB for zbuffer: %s" +msgstr "无法为zbuffer: %2$s分配%1$d MiB" + +#: fwrite.c:764 +#, c-format +msgid "Compress gzip error: %d" +msgstr "解压gzip错误: %d" + +#: fwrite.c:765 fwrite.c:773 +#, c-format +msgid "%s: '%s'" +msgstr "%s: '%s'" + +#: fwrite.c:770 +#, c-format +msgid "done in %.3fs\n" +msgstr "%.3fs完成\n" + +#: fwrite.c:772 +msgid "No data rows present (nrow==0)\n" +msgstr "当前没有数据行(nrow==0)\n" + +#: fwrite.c:790 +#, c-format +msgid "" +"Writing % rows in %d batches of %d rows (each buffer size %dMB, " +"showProgress=%d, nth=%d)\n" +msgstr "" +"正在%3$d行的%2$d批处理中写入%1$行(每个缓存的大小为%4$dMB," +"showProgress=%5$d, nth=%6$d)\n" +")\n" + +#: fwrite.c:812 +#, c-format +msgid "" +"Unable to allocate %d MB * %d thread buffers; '%d: %s'. Please read ?fwrite " +"for nThread, buffMB and verbose options." +msgstr "无法分配 %d MB * %d 的线程缓存;'%d: %s'。请阅读 ?fwrite 中" +"对 nThread、buffMB 和 verbose 选项的说明。" + +#: fwrite.c:822 +#, c-format +msgid "" +"Unable to allocate %d MB * %d thread compressed buffers; '%d: %s'. Please " +"read ?fwrite for nThread, buffMB and verbose options." +msgstr "无法分配 %d MB * %d 的线程压缩缓存;'%d: %s'。请" +"阅读 ?fwrite 中对 nThread、buffMB 和 verbose 选项的说明。" + +#: fwrite.c:851 fwrite.c:883 fwrite.c:885 +#, c-format +msgid "z_stream for data (%d): " +msgstr "data (%d) 的 z_stream:" + +#: fwrite.c:980 +#, c-format +msgid "" +"zlib %s (zlib.h %s) deflate() returned error %d with z_stream->msg==\"%s\" " +"Z_FINISH=%d Z_BLOCK=%d. %s" +msgstr "" +"zlib %s (zlib.h %s) deflate() 返回了错误%d跟错误 z_stream->msg==\"%s\" " +"Z_FINISH=%d Z_BLOCK=%d . %s" + +#: fwrite.c:982 +msgid "" +"Please include the full output above and below this message in your data." +"table bug report." +msgstr "请将此消息上方和下方的全部输出结果一起提交到data.table的bug report中" + +#: fwrite.c:983 +msgid "" +"Please retry fwrite() with verbose=TRUE and include the full output with " +"your data.table bug report." +msgstr "" +"请使用verbose=TRUE重试fwrite(),并将完整的输出提交到data.table的bug report中" + +#: fwriteR.c:41 +msgid "Internal error: col passed to getMaxCategLen is missing levels" +msgstr "内部错误:传递给getMaxCateLen的col正在丢失级别" + +#: fwriteR.c:75 +msgid "Internal error: getMaxListItemLen should have caught this up front." +msgstr "内部错误:getMaxListItemLen应该已经预先抓取了这个" + +#: fwriteR.c:98 +#, c-format +msgid "" +"Row % of list column is type '%s' - not yet implemented. fwrite() " +"can write list columns containing items which are atomic vectors of type " +"logical, integer, integer64, double, complex and character." +msgstr "" +"列表页行%的类型是'%s' - 尚未实施. fwrite()可以写入包含逻辑类型原子向" +"量项目的列表页,整数,整数64,双精度,复数和字符" + +#: fwriteR.c:103 +#, c-format +msgid "" +"Internal error: row % of list column has no max length method " +"implemented" +msgstr "内部错误:列表页的%行没有实现最大长度方法" + +#: fwriteR.c:170 +msgid "" +"fwrite must be passed an object of type list; e.g. data.frame, data.table" +msgstr "fwrite必须传递一个类型为列表的对象;比如data.frame, data.table" + +#: fwriteR.c:179 +msgid "fwrite was passed an empty list of no columns. Nothing to write." +msgstr "fwrite传递了一个没有列的空列表. 没有对象可以写入" + +#: fwriteR.c:232 +#, c-format +msgid "" +"Column %d's length (%d) is not the same as column 1's length (%)" +msgstr "列%d的长度(%d)和列1的长度(%)不一致" + +#: fwriteR.c:236 +#, c-format +msgid "Column %d's type is '%s' - not yet implemented in fwrite." +msgstr "列%d的类型是'%s' - 尚未在fwrite中实施" + +#: fwriteR.c:261 +msgid "" +"No list columns are present. Setting sep2='' otherwise quote='auto' would " +"quote fields containing sep2.\n" +msgstr "" +"当前没有列表页. 设置sep2=''否则quote='auto'会自动为所有包含sep2的字段加上引" +"号.\n" + +#: fwriteR.c:265 +#, c-format +msgid "" +"If quote='auto', fields will be quoted if the field contains either sep " +"('%c') or sep2 ('%c') because column %d is a list column.\n" +msgstr "" +"如果参数设定quote = 'auto',由于%3$d列是列表页 (list-column is a data frame " +"that host lists),所有包含sep('%1$c') 或 sep2 ('%2$c')的字段将会被自动加上引" +"号。\n" + +#: fwriteR.c:269 +#, c-format +msgid "" +"sep ('%c'), sep2 ('%c') and dec ('%c') must all be different. Column %d is a " +"list column." +msgstr "sep ('%c'), sep2 ('%c') 和 dec ('%c') 必须都不相同. 列 %d 是一个空列表" + +#: gsumm.c:43 +msgid "env is not an environment" +msgstr "env不是环境" + +#: gsumm.c:45 gsumm.c:46 gsumm.c:47 +#, c-format +msgid "%s is not an integer vector" +msgstr "%s不是整数向量" + +#: gsumm.c:56 +msgid "irowsArg is neither an integer vector nor NULL" +msgstr "irowsArg 既不是整数向量也不是 NULL" + +#: gsumm.c:58 +#, c-format +msgid "length(f)=%d != length(l)=%d" +msgstr "length(f)=%d != length(l)=%d" + +#: gsumm.c:66 +#, c-format +msgid "o has length %d but sum(l)=%d" +msgstr "o 的长度为 %d,但 sum(l) = %d" + +#: gsumm.c:69 +msgid "Internal error: o's maxgrpn attribute mismatches recalculated maxgrpn" +msgstr "内部错误:o 的 maxgrpn 属性与重新计算的 maxgrpn 不匹配" + +#: gsumm.c:89 +#, c-format +msgid "" +"Internal error: nrow=%d ngrp=%d nbit=%d shift=%d highSize=%d nBatch=%d " +"batchSize=%d lastBatchSize=%d\n" +msgstr "" +"内部错误:nrow=%d ngrp=%d nbit=%d shift=%d highSize=%d nBatch=%d " +"batchSize=%d lastBatchSize=%d\n" + +#: gsumm.c:98 +#, c-format +msgid "gforce initial population of grp took %.3f\n" +msgstr "grp 的 gforce 初始群体数占了 %.3f\n" + +#: gsumm.c:116 +msgid "" +"Internal error: Failed to allocate counts or TMP when assigning g in gforce" +msgstr "内部错误:在 gforce 中为 g 赋值时,未能成功为 counts 或者 TMP 分配空间" + +#: gsumm.c:194 +#, c-format +msgid "gforce assign high and low took %.3f\n" +msgstr "gforce 分配 high 和 low 用了 %.3f\n" + +#: gsumm.c:200 +#, c-format +msgid "gforce eval took %.3f\n" +msgstr "gforce eval 用了 %.3f\n" + +#: gsumm.c:216 +msgid "gather took ... " +msgstr "gather 用了 ..." + +#: gsumm.c:334 +#, c-format +msgid "gather implemented for INTSXP, REALSXP, and CPLXSXP but not '%s'" +msgstr "gather 已支持 INTSXP,REALSXP 和 CPLXSXP,但不支持 '%s'" + +#: gsumm.c:336 gsumm.c:568 +#, c-format +msgid "%.3fs\n" +msgstr "%.3fs\n" + +#: gsumm.c:345 +msgid "sum is not meaningful for factors." +msgstr "因子的和没有意义。" + +#: gsumm.c:349 +#, c-format +msgid "This gsum took (narm=%s) ... " +msgstr "gsum 占用了 (narm=%s) ..." + +#: gsumm.c:350 gsumm.c:606 gsumm.c:693 gsumm.c:812 gsumm.c:955 gsumm.c:1005 +#: gsumm.c:1085 gsumm.c:1176 gsumm.c:1266 gsumm.c:1409 +#, c-format +msgid "nrow [%d] != length(x) [%d] in %s" +msgstr "%3$s 中 nrow [%1$d] != length(x) [%2$d]" + +#: gsumm.c:404 +msgid "" +"The sum of an integer column for a group was more than type 'integer' can " +"hold so the result has been coerced to 'numeric' automatically for " +"convenience." +msgstr "" +"某整数列分组求和的结果中,出现了超过了整型(integer)数值所允许最大值的情" +"况,故结果被自动转换为数值类型(numeric)" + +#: gsumm.c:565 +#, c-format +msgid "" +"Type '%s' not supported by GForce sum (gsum). Either add the prefix base::" +"sum(.) or turn off GForce optimization using options(datatable.optimize=1)" +msgstr "" +"GForce 求和(gsum)不支持类型 '%s'。请使用 base::sum(.) 或者设置 " +"options(datatable.optimize=1) 关闭 GForce 优化" + +#: gsumm.c:578 +msgid "" +"GForce mean can only be applied to columns, not .SD or similar. Likely " +"you're looking for 'DT[,lapply(.SD,mean),by=,.SDcols=]'. See ?data.table." +msgstr "" +"GForce 求平均值仅适用于列,而不能用于 .SD 或其它。或许你在查找 'DT[,lapply(." +"SD,mean),by=,.SDcols=]'。参见 ?data.table 。" + +#: gsumm.c:579 +msgid "mean is not meaningful for factors." +msgstr "因子的平均值没有意义" + +#: gsumm.c:599 +#, c-format +msgid "Internal error: gsum returned type '%s'. typeof(x) is '%s'" +msgstr "内部错误:gsum 返回的类型是 '%s',而 typeof(x) 的结果则是 '%s'" + +#: gsumm.c:609 +#, c-format +msgid "Unable to allocate %d * %d bytes for sum in gmean na.rm=TRUE" +msgstr "无法为 gmean na.rm=TRUE 的总和(sum)分配 %d * %d 字节空间" + +#: gsumm.c:612 +#, c-format +msgid "Unable to allocate %d * %d bytes for counts in gmean na.rm=TRUE" +msgstr "无法为 gmean na.rm=TRUE 的计数(counts)分配 %d * %d 字节空间" + +#: gsumm.c:638 +#, c-format +msgid "Unable to allocate %d * %d bytes for si in gmean na.rm=TRUE" +msgstr "无法为 gmean na.rm=TRUE 的 si 分配 %d * %d 字节空间" + +#: gsumm.c:650 +#, c-format +msgid "" +"Type '%s' not supported by GForce mean (gmean) na.rm=TRUE. Either add the " +"prefix base::mean(.) or turn off GForce optimization using options(datatable." +"optimize=1)" +msgstr "" +"GForce 求均值(gmean)不支持类型 '%s'。请使用 base::mean(.) 或者设置 " +"options(datatable.optimize=1) 关闭 GForce 优化" + +#: gsumm.c:674 +msgid "Internal error: unsupported type at the end of gmean" +msgstr "内部错误:gmean 结尾处存在不支持的类型" + +#: gsumm.c:687 +msgid "" +"GForce min can only be applied to columns, not .SD or similar. To find min " +"of all items in a list such as .SD, either add the prefix base::min(.SD) or " +"turn off GForce optimization using options(datatable.optimize=1). More " +"likely, you may be looking for 'DT[,lapply(.SD,min),by=,.SDcols=]'" +msgstr "" +"GForce 求最小值(min)仅适用于列,而不能用于 .SD 或其它。要找到列表中(如 ." +"SD)所有元素的最小值,须使用 base::min(.SD) 或者设置 options(datatable." +"optimize=1) 关闭 GForce 优化。你更像是在查找 'DT[,lapply(.SD,min),by=,." +"SDcols=]'" + +#: gsumm.c:688 +msgid "min is not meaningful for factors." +msgstr "因子的最小值没有意义。" + +#: gsumm.c:717 gsumm.c:850 +msgid "" +"No non-missing values found in at least one group. Coercing to numeric type " +"and returning 'Inf' for such groups to be consistent with base" +msgstr "" +"在至少一个分组中没有发现缺失值。为了与 base 保持一致,将这些组强制转换为数值" +"类型并返回 ‘Inf’。" + +#: gsumm.c:756 gsumm.c:891 +msgid "" +"No non-missing values found in at least one group. Returning 'NA' for such " +"groups to be consistent with base" +msgstr "" +"在至少一个分组中没有发现缺失值。为了与 base 保持一致,这些组将返回 ‘NA’。" + +#: gsumm.c:783 +msgid "" +"No non-missing values found in at least one group. Returning 'Inf' for such " +"groups to be consistent with base" +msgstr "" +"在至少一个分组中没有发现缺失值。为了与 base 保持一致,这些组将返回 ‘Inf’。" + +#: gsumm.c:791 +msgid "Type 'complex' has no well-defined min" +msgstr "复数不能比较大小,故没有最小值" + +#: gsumm.c:794 +#, c-format +msgid "" +"Type '%s' not supported by GForce min (gmin). Either add the prefix base::" +"min(.) or turn off GForce optimization using options(datatable.optimize=1)" +msgstr "" +"类型'%s'不支持应用 GForce 最小值(gmin) 优化。你可以添加前缀 base::min(.) 或" +"者使用 options(datatable.optimize=1) 关闭 GForce 优化" + +#: gsumm.c:806 +msgid "" +"GForce max can only be applied to columns, not .SD or similar. To find max " +"of all items in a list such as .SD, either add the prefix base::max(.SD) or " +"turn off GForce optimization using options(datatable.optimize=1). More " +"likely, you may be looking for 'DT[,lapply(.SD,max),by=,.SDcols=]'" +msgstr "" +"GForce的max函数只能在应用在数据列上,而不能在.SD或者其他对象上。为了找到某个" +"list(如.SD)里所有元素的最大值,请使用 base::max(.SD) 或者通过设置 " +"options(datatable.optimize=1) 来关掉GForce优化。更有可能的是,你真正想要使用" +"的命令是 'DT[,lapply(.SD,max),by=,.SDcols=]'" + +#: gsumm.c:807 +msgid "max is not meaningful for factors." +msgstr "因子的最大值是没有意义的" + +#: gsumm.c:930 +msgid "" +"No non-missing values found in at least one group. Returning '-Inf' for such " +"groups to be consistent with base" +msgstr "" +"至少有一个子集的值全为缺失值。为保持和base包一致,对这种情况将会返回'-Inf'" + +#: gsumm.c:937 +msgid "Type 'complex' has no well-defined max" +msgstr "类型'complex'没有明确定义的最大值" + +#: gsumm.c:940 +#, c-format +msgid "" +"Type '%s' not supported by GForce max (gmax). Either add the prefix base::" +"max(.) or turn off GForce optimization using options(datatable.optimize=1)" +msgstr "" +"GForce的max (gmax)函数不支持类型 '%s'。请使用 base::max(.) 或者设置 " +"options(datatable.optimize=1) 来关掉GForce优化" + +#: gsumm.c:951 +msgid "" +"GForce median can only be applied to columns, not .SD or similar. To find " +"median of all items in a list such as .SD, either add the prefix stats::" +"median(.SD) or turn off GForce optimization using options(datatable." +"optimize=1). More likely, you may be looking for 'DT[,lapply(.SD,median)," +"by=,.SDcols=]'" +msgstr "" +"GForce的median函数只能在应用在数据列上,而不能在.SD或者其他对象上。为了找到某" +"个list(如.SD)里所有元素的最大值,请使用 stats::median(.SD) 或者通过设置 " +"options(datatable.optimize=1) 来关掉GForce优化。更有可能的是,你真正想要使用" +"的命令是 'DT[,lapply(.SD,median),by=,.SDcols=]'" + +#: gsumm.c:952 +msgid "median is not meaningful for factors." +msgstr "因子的中位值没有意义。" + +#: gsumm.c:992 +#, c-format +msgid "" +"Type '%s' not supported by GForce median (gmedian). Either add the prefix " +"stats::median(.) or turn off GForce optimization using options(datatable." +"optimize=1)" +msgstr "" +"GForce函数median (gmedian)不支持类型'%s'。请使用 stats::tail(.) 或者设置 " +"options(datatable.optimize=1) 来关掉GForce优化。" + +#: gsumm.c:1073 +#, c-format +msgid "" +"Type '%s' not supported by GForce tail (gtail). Either add the prefix utils::" +"tail(.) or turn off GForce optimization using options(datatable.optimize=1)" +msgstr "" +"GForce函数tail (gtail)不支持类型'%s'。请使用 utils::tail(.) 或者设置 " +"options(datatable.optimize=1) 来关掉GForce优化。" + +#: gsumm.c:1153 +#, c-format +msgid "" +"Type '%s' not supported by GForce head (ghead). Either add the prefix utils::" +"head(.) or turn off GForce optimization using options(datatable.optimize=1)" +msgstr "" +"GForce函数head (ghead)不支持类型'%s'。请使用 utils::head(.) 或者设置 " +"options(datatable.optimize=1) 来关掉GForce优化。" + +#: gsumm.c:1161 +msgid "" +"Internal error, gtail is only implemented for n=1. This should have been " +"caught before. please report to data.table issue tracker." +msgstr "" +"内部错误:gtail仅能应用于n=1的情况。此错误理应已被处理。请在 data.table 的 " +"GitHub中提交报告。" + +#: gsumm.c:1166 +msgid "" +"Internal error, ghead is only implemented for n=1. This should have been " +"caught before. please report to data.table issue tracker." +msgstr "" +"内部错误:ghead仅能应用于n=1的情况。此错误理应已被处理。请在 data.table 的 " +"GitHub中提交报告。" + +#: gsumm.c:1172 +msgid "" +"Internal error, `g[` (gnthvalue) is only implemented single value subsets " +"with positive index, e.g., .SD[2]. This should have been caught before. " +"please report to data.table issue tracker." +msgstr "" +"内部错误:`g[` (gnthvalue) 仅能用于采用单个正数索引求取子集,如 .SD[2]。此错" +"误理应已被处理。请在 data.table 的 GitHub中提交报告。" + +#: gsumm.c:1250 +#, c-format +msgid "" +"Type '%s' not supported by GForce subset `[` (gnthvalue). Either add the " +"prefix utils::head(.) or turn off GForce optimization using " +"options(datatable.optimize=1)" +msgstr "" +"GForce取子集运算符`[` (gnthvalue)尚不支持'%s'类型。。请添加前缀stats::" +"var(.),或使用options(datatable.optimize=1) 关闭 GForce优化" + +#: gsumm.c:1262 +msgid "" +"GForce var/sd can only be applied to columns, not .SD or similar. For the " +"full covariance matrix of all items in a list such as .SD, either add the " +"prefix stats::var(.SD) (or stats::sd(.SD)) or turn off GForce optimization " +"using options(datatable.optimize=1). Alternatively, if you only need the " +"diagonal elements, 'DT[,lapply(.SD,var),by=,.SDcols=]' is the optimized way " +"to do this." +msgstr "" +"GForce var/sd 仅能应用于列,而非.SD或其他。若要求取某一列表,如.SD,所有元素" +"的全协方差矩阵,请添加前缀stats::var(.SD)(或stats::sd(.SD)),或使用" +"options(datatable.optimize=1) 关闭 GForce优化。另外,若仅需获得对角线元素,最" +"佳的方式是使用'DT[,lapply(.SD,var),by=,.SDcols=]'。" + +#: gsumm.c:1263 +msgid "var/sd is not meaningful for factors." +msgstr "无法对因子类型使用 var/sd。" + +#: gsumm.c:1382 +#, c-format +msgid "" +"Type '%s' not supported by GForce var (gvar). Either add the prefix stats::" +"var(.) or turn off GForce optimization using options(datatable.optimize=1)" +msgstr "" +"GForce var (gvar) 尚不支持 '%s'类型。请添加前缀stats::var(.),或使用" +"options(datatable.optimize=1) 关闭 GForce优化" + +#: gsumm.c:1384 +#, c-format +msgid "" +"Type '%s' not supported by GForce sd (gsd). Either add the prefix stats::" +"sd(.) or turn off GForce optimization using options(datatable.optimize=1)" +msgstr "" +"GForce sd (gsd)不支持类型'%s',要么添加前缀 stats::sd(.),要么使用选项" +"datatable.optimize=1来关闭GForce优化。" + +#: gsumm.c:1403 +msgid "" +"GForce prod can only be applied to columns, not .SD or similar. To multiply " +"all items in a list such as .SD, either add the prefix base::prod(.SD) or " +"turn off GForce optimization using options(datatable.optimize=1). More " +"likely, you may be looking for 'DT[,lapply(.SD,prod),by=,.SDcols=]'" +msgstr "" +"GForce prod只能应用于列,而不能应用于.SD或其他类似格式的。为了在列表如.SD相乘" +"所有的元素,要么添加前缀base::prod(.SD), 要么使用选项datatable.optimize=1来关" +"闭GForce优化。你可以试试'DT[,lapply(.SD,prod),by=,.SDcols=]'" + +#: gsumm.c:1404 +msgid "prod is not meaningful for factors." +msgstr "prod对于因子是没有意义的" + +#: gsumm.c:1411 +#, c-format +msgid "Unable to allocate %d * %d bytes for gprod" +msgstr "无法给gprod分配%d * %d 字节" + +#: gsumm.c:1446 +#, c-format +msgid "" +"Type '%s' not supported by GForce prod (gprod). Either add the prefix base::" +"prod(.) or turn off GForce optimization using options(datatable.optimize=1)" +msgstr "" +"GForce prod (gprod)不支持类型'%s',要么添加前缀 base::prod(.),要么使用选项" +"datatable.optimize=1来关闭GForce优化。" + +#: ijoin.c:22 ijoin.c:243 +msgid "" +"Internal error: invalid value for 'mult'; this should have been caught " +"before. please report to data.table issue tracker" +msgstr "" +"内部错误:'mult'的值无效;这应该在之前被找到。请报告给data.table问题跟踪器" + +#: ijoin.c:29 ijoin.c:250 +msgid "" +"Internal error: invalid value for 'type'; this should have been caught " +"before. please report to data.table issue tracker" +msgstr "" +"内部错误:'type'的值无效;这应该在之前被找到。请报告给data.table问题跟踪器" + +#: ijoin.c:56 ijoin.c:121 +#, c-format +msgid "Internal error: unknown type in mult=%d in lookup: %d" +msgstr "内部错误:在查找的过程中,mult=%d出现未知的类型:%d" + +#: ijoin.c:124 ijoin.c:215 +#, c-format +msgid "Internal error: unknown mult in lookup: %d" +msgstr "内部错误:在查找中出现未知的mult:%d" + +#: ijoin.c:128 +#, c-format +msgid "First pass on calculating lengths in lookup ... done in %8.3f seconds\n" +msgstr "查找的第一步:长度计算...在%8.3f秒内完成\n" + +#: ijoin.c:141 +#, c-format +msgid "Second pass on allocation in lookup ... done in %8.3f seconds\n" +msgstr "查找的第二步:分配...在%8.3f秒内完成\n" + +#: ijoin.c:160 +#, c-format +msgid "Internal error: unknown type lookup should have been caught earlier: %d" +msgstr "内部错误:未知类型查找应该被更早找到:%d" + +#: ijoin.c:212 +#, c-format +msgid "" +"Internal error: unknown type in mult=%d in lookup should have been caught " +"earlier: %d" +msgstr "内部错误:在在查找的过程中,mult=%d出现未知的类型应该被更早找到:%d" + +#: ijoin.c:220 +#, c-format +msgid "Final step in generating lookup ... done in %8.3f seconds\n" +msgstr "查找的最后一步:生成结果...在在%8.3f秒内完成\n" + +#: ijoin.c:323 +#, c-format +msgid "Internal error: unknown type in mult=ALL in overlaps: %d" +msgstr "内部错误:在重叠的过程中,mult=ALL出现未知类型:%d" + +#: ijoin.c:328 +#, c-format +msgid "" +"First pass on calculating lengths in overlaps ... done in %8.3f seconds\n" +msgstr "重叠的第一步:长度计算...在%8.3f秒内完成\n" + +#: ijoin.c:464 ijoin.c:571 ijoin.c:720 +#, c-format +msgid "Internal error: unknown type in mult=%d in overlaps: %d" +msgstr "内部错误:在重叠的过程中,mult=%d出现未知类型:%d" + +#: ijoin.c:723 +#, c-format +msgid "Internal error: unknown mult in overlaps: %d" +msgstr "内部错误:在重叠中出现未知的mult:%d" + +#: ijoin.c:727 +#, c-format +msgid "Final step, fetching indices in overlaps ... done in %8.3f seconds\n" +msgstr "重叠的最后一步:获取索引...在%8.3f秒内完成\n" + +#: init.c:239 +#, c-format +msgid "" +"Pointers are %d bytes, greater than 8. We have not tested on any " +"architecture greater than 64bit yet." +msgstr "指针是%d个字节,大于8。我们尚未在大于64位的任何体系结构上进行测试。" + +#: init.c:253 +#, c-format +msgid "Checking NA_INTEGER [%d] == INT_MIN [%d] %s" +msgstr "检查NA_INTEGER [%d] == INT_MIN [%d] %s" + +#: init.c:254 +#, c-format +msgid "Checking NA_INTEGER [%d] == NA_LOGICAL [%d] %s" +msgstr "检查Checking NA_INTEGER [%d] == NA_LOGICAL [%d] %s" + +#: init.c:255 +#, c-format +msgid "Checking sizeof(int) [%d] is 4 %s" +msgstr "检查sizeof(int)[%d]是否为4 %s" + +#: init.c:256 +#, c-format +msgid "Checking sizeof(double) [%d] is 8 %s" +msgstr "检查 sizeof(double) [%d]是否为8 %s" + +#: init.c:258 +#, c-format +msgid "Checking sizeof(long long) [%d] is 8 %s" +msgstr "检查sizeof(long long) [%d]是否为8 %s" + +#: init.c:259 +#, c-format +msgid "Checking sizeof(pointer) [%d] is 4 or 8 %s" +msgstr "检查sizeof(pointer) [%d]是否为4 或者 8 %s" + +#: init.c:260 +#, c-format +msgid "Checking sizeof(SEXP) [%d] == sizeof(pointer) [%d] %s" +msgstr "检查sizeof(SEXP) [%d] == sizeof(pointer) [%d] %s" + +#: init.c:261 +#, c-format +msgid "Checking sizeof(uint64_t) [%d] is 8 %s" +msgstr "检查 sizeof(uint64_t) [%d]是否为8 %s" + +#: init.c:262 +#, c-format +msgid "Checking sizeof(int64_t) [%d] is 8 %s" +msgstr "检查sizeof(int64_t) [%d]是否为8 %s" + +#: init.c:263 +#, c-format +msgid "Checking sizeof(signed char) [%d] is 1 %s" +msgstr "检查sizeof(signed char) [%d]是否为1 %s" + +#: init.c:264 +#, c-format +msgid "Checking sizeof(int8_t) [%d] is 1 %s" +msgstr "检查sizeof(int8_t) [%d]是否为1 %s" + +#: init.c:265 +#, c-format +msgid "Checking sizeof(uint8_t) [%d] is 1 %s" +msgstr "检查sizeof(uint8_t) [%d]是否为1 %s" + +#: init.c:266 +#, c-format +msgid "Checking sizeof(int16_t) [%d] is 2 %s" +msgstr "检查sizeof(int16_t) [%d]是否为2 %s" + +#: init.c:267 +#, c-format +msgid "Checking sizeof(uint16_t) [%d] is 2 %s" +msgstr "检查sizeof(uint16_t) [%d]是否为2 %s" + +#: init.c:270 +#, c-format +msgid "Checking LENGTH(allocVector(INTSXP,2)) [%d] is 2 %s" +msgstr "检查LENGTH(allocVector(INTSXP,2)) [%d]是否为2 %s" + +#: init.c:271 +#, c-format +msgid "Checking TRUELENGTH(allocVector(INTSXP,2)) [%d] is 0 %s" +msgstr "检查TRUELENGTH(allocVector(INTSXP,2)) [%d]是否为0 %s" + +#: init.c:278 +#, c-format +msgid "Checking memset(&i,0,sizeof(int)); i == (int)0 %s" +msgstr "检查memset(&i,0,sizeof(int)); i == (int)0 %s" + +#: init.c:281 +#, c-format +msgid "Checking memset(&ui, 0, sizeof(unsigned int)); ui == (unsigned int)0 %s" +msgstr "检查memset(&ui, 0, sizeof(unsigned int)); ui == (unsigned int)0 %s" + +#: init.c:284 +#, c-format +msgid "Checking memset(&d, 0, sizeof(double)); d == (double)0.0 %s" +msgstr "检查memset(&d, 0, sizeof(double)); d == (double)0.0 %s" + +#: init.c:287 +#, c-format +msgid "Checking memset(&ld, 0, sizeof(long double)); ld == (long double)0.0 %s" +msgstr "检查memset(&ld, 0, sizeof(long double)); ld == (long double)0.0 %s" + +#: init.c:290 +msgid "The ascii character '/' is not just before '0'" +msgstr "ASCII 字符 '/' 后一个字符并非字符 '0'" + +#: init.c:291 +msgid "The C expression (uint_fast8_t)('/'-'0')<10 is true. Should be false." +msgstr "C表达式 (uint_fast8_t)('/'-'0') <10 为 true. 应该是 false." + +#: init.c:292 +msgid "The ascii character ':' is not just after '9'" +msgstr "ascii字符':'不是在'9'后" + +#: init.c:293 +msgid "The C expression (uint_fast8_t)('9'-':')<10 is true. Should be false." +msgstr "C表达式(uint_fast8_t)('9'-':') < 10 为 true. 应该是 false." + +#: init.c:298 +#, c-format +msgid "Conversion of NA_INT64 via double failed %!=%" +msgstr "double类型转化为NA_INT64失败,%!=%" + +#: init.c:302 +msgid "NA_INT64_D (negative -0.0) is not == 0.0." +msgstr "NA_INT64_D (negative -0.0) 不是 == 0.0." + +#: init.c:303 +msgid "NA_INT64_D (negative -0.0) is not ==-0.0." +msgstr "NA_INT64_D (negative -0.0) 不是 ==-0.0." + +#: init.c:304 +msgid "ISNAN(NA_INT64_D) is TRUE but should not be" +msgstr "ISNAN(NA_INT64_D) 不应该是TRUE" + +#: init.c:305 +msgid "isnan(NA_INT64_D) is TRUE but should not be" +msgstr "isnan(NA_INT64_D) 不应该是 TRUE" + +#: init.c:337 +#, c-format +msgid "PRINTNAME(install(\"integer64\")) has returned %s not %s" +msgstr "PRINTNAME(install(\"integer64\")) 返回了 %s , 而不是 %s" + +#: init.c:408 +msgid ".Last.value in namespace is not a length 1 integer" +msgstr "命名空间中,.Last.value 不是一个长度为 1 的整型" + +#: nafill.c:99 +msgid "" +"'x' argument is atomic vector, in-place update is supported only for list/" +"data.table" +msgstr "参数'x'是一个原子型矢量,原位的更新只为list 或 data.table提供" + +#: nafill.c:101 nafill.c:111 +msgid "'x' argument must be numeric type, or list/data.table of numeric types" +msgstr "参数'x'必须是数字类型,或者是数字类型的list/data.table" + +#: nafill.c:159 nafill.c:190 +msgid "" +"Internal error: invalid type argument in nafillR function, should have been " +"caught before. Please report to data.table issue tracker." +msgstr "" +"内部错误:函数 nafillR 中有无效类型的参数, 该错误理应已被捕获,请向data.table" +"的issue通道报告" + +#: nafill.c:182 +msgid "nan_is_na must be TRUE or FALSE" +msgstr "nan_is_na 必须是 TRUE 或者 FALSE" + +#: nafill.c:206 +#, c-format +msgid "%s: parallel processing of %d column(s) took %.3fs\n" +msgstr "%s : 并行处理 %d 列, 用时 %.3fs\n" + +#: openmp-utils.c:23 +#, c-format +msgid "" +"Ignoring invalid %s==\"%s\". Not an integer >= 1. Please remove any " +"characters that are not a digit [0-9]. See ?data.table::setDTthreads." +msgstr "" +"忽略无效的 %s==\"%s\". 不是一个 >= 1 的整型. 请去除任何不是[0-9]数字的字符。 " +"查看?data.table::setDTthreads." + +#: openmp-utils.c:44 +#, c-format +msgid "" +"Ignoring invalid R_DATATABLE_NUM_PROCS_PERCENT==%d. If used it must be an " +"integer between 2 and 100. Default is 50. See ?setDTtheads." +msgstr "" +"忽略无效的R_DATATABLE_NUM_PROCS_PERCENT==%d. 如需使用,它必须是一个2-100的整" +"型,默认值为50查看?setDTtheads." + +#: openmp-utils.c:78 +msgid "'verbose' must be TRUE or FALSE" +msgstr "'verbose'必须是TRUE或者FALSE" + +#: openmp-utils.c:81 +msgid "" +"This installation of data.table has not been compiled with OpenMP support.\n" +msgstr "安装的data.table并不是获得OpenMP支持的编译\n" + +#: openmp-utils.c:86 +#, c-format +msgid " omp_get_num_procs() %d\n" +msgstr " omp_get_num_procs() %d\n" + +#: openmp-utils.c:87 +#, c-format +msgid " R_DATATABLE_NUM_PROCS_PERCENT %s\n" +msgstr " R_DATATABLE_NUM_PROCS_PERCENT %s\n" + +#: openmp-utils.c:88 +#, c-format +msgid " R_DATATABLE_NUM_THREADS %s\n" +msgstr " R_DATATABLE_NUM_THREADS %s\n" + +#: openmp-utils.c:89 +#, c-format +msgid " R_DATATABLE_THROTTLE %s\n" +msgstr " R_DATATABLE_THROTTLE %s\n" + +#: openmp-utils.c:90 +#, c-format +msgid " omp_get_thread_limit() %d\n" +msgstr " omp_get_thread_limit() %d\n" + +#: openmp-utils.c:91 +#, c-format +msgid " omp_get_max_threads() %d\n" +msgstr " omp_get_max_threads() %d\n" + +#: openmp-utils.c:92 +#, c-format +msgid " OMP_THREAD_LIMIT %s\n" +msgstr " OMP_THREAD_LIMIT %s\n" + +#: openmp-utils.c:93 +#, c-format +msgid " OMP_NUM_THREADS %s\n" +msgstr " OMP_NUM_THREADS %s\n" + +#: openmp-utils.c:94 +#, c-format +msgid " RestoreAfterFork %s\n" +msgstr " RestoreAfterFork %s\n" + +#: openmp-utils.c:95 +#, c-format +msgid "" +" data.table is using %d threads with throttle==%d. See ?setDTthreads.\n" +msgstr " data.table 正在使用 %d 线程, throttle==%d. 查看 ?setDTthreads.\n" + +#: openmp-utils.c:103 +msgid "" +"restore_after_fork= must be TRUE, FALSE, or NULL (default). " +"getDTthreads(verbose=TRUE) reports the current setting.\n" +msgstr "" +"restore_after_fork= 必须是 TRUE, FALSE, 或者 NULL (默认值). " +"getDTthreads(verbose=TRUE) 来查看当前设置.\n" + +#: openmp-utils.c:109 +msgid "'throttle' must be a single number, non-NA, and >=1" +msgstr "'throttle' 须为单个非 NA 且 >= 1 的数值" + +#: openmp-utils.c:123 +msgid "" +"threads= must be either NULL or a single number >= 0. See ?setDTthreads." +msgstr "threads= 必须是 NULL 或者一个>=0 的数值。 查看 ?setDTthreads." + +#: openmp-utils.c:127 +msgid "Internal error: percent= must be TRUE or FALSE at C level" +msgstr "内部错误: 在 C 中,percent= 必须是TRUE or FALSE " + +#: openmp-utils.c:130 +#, c-format +msgid "" +"Internal error: threads==%d should be between 2 and 100 (percent=TRUE at C " +"level)." +msgstr "内部错误: threads==%d 应该为 2 至 100 (percent=TRUE, 在 C 中)." + +#: rbindlist.c:8 +msgid "fill= should be TRUE or FALSE" +msgstr "fill= 应该是 TRUE 或 FALSE" + +#: rbindlist.c:10 +msgid "use.names= should be TRUE, FALSE, or not used (\"check\" by default)" +msgstr "use.names= 应该是 TRUE, FALSE, 或者默认不使用 (\"check\" )" + +#: rbindlist.c:12 +msgid "" +"Input to rbindlist must be a list. This list can contain data.tables, data." +"frames or plain lists." +msgstr "" +"rbindlist的输入必须是一个list. 该list可以包含data.table, data.frame 或者 普通" +"list." + +#: rbindlist.c:16 +msgid "use.names= cannot be FALSE when fill is TRUE. Setting use.names=TRUE." +msgstr "当fill是TRUE时,use.names= 不能是FALSE . 正在设置 use.names=TRUE." + +#: rbindlist.c:20 +msgid "Internal error: rbindlist.c idcol is not a single string" +msgstr "内部错误: rbindlist.c idcol 不是一个单字符串" + +#: rbindlist.c:31 +#, c-format +msgid "Item %d of input is not a data.frame, data.table or list" +msgstr "输入项 %d 不是一个data.frame, data.table 或list" + +#: rbindlist.c:39 +#, c-format +msgid "" +"Item %d has %d columns, inconsistent with item %d which has %d columns. To " +"fill missing columns use fill=TRUE." +msgstr "" +"项%d有%d列, 与第%d项不一致, 它有%d列. 若要填补这些列, 请使用fill=TRUE." + +#: rbindlist.c:42 +#, c-format +msgid "Item %d has %d columns but %d column names. Invalid object." +msgstr "=====================第%d项有%d列, 却有列名 %d 个. 无效对象." + +#: rbindlist.c:49 +#, c-format +msgid "" +"Column %d of item %d is length %d inconsistent with column %d which is " +"length %d. Only length-1 columns are recycled." +msgstr "" +"第 %2$d 项的第 %1$d 列长度为 %3$d,与第 %4$d 列的长度 %5$d 不一致。只有长度" +"为 1 的列会被循环补齐。" + +#: rbindlist.c:58 +#, c-format +msgid "" +"Column %d ['%s'] of item %d is length 0. This (and %d other%s like it) has " +"been filled with NA (NULL for list columns) to make each item uniform." +msgstr "" +"第%d列['%s'](子项%d的)的长度为0,它(以及%d其他%s类似的)被填充为NA(等同与列表" +"列的NULL值)使得每一个子项统一。" + +#: rbindlist.c:62 +#, c-format +msgid "" +"Total rows in the list is % which is larger than the maximum number " +"of rows, currently %d" +msgstr "列表的总行数为 %,比当前行数的最大值 %d 大。" + +#: rbindlist.c:63 +msgid "use.names=TRUE but no item of input list has any names" +msgstr "use.names=TRUE,但是输入列表的各项均没有名字。" + +#: rbindlist.c:71 +#, c-format +msgid "" +"Failed to allocate upper bound of % unique column names " +"[sum(lapply(l,ncol))]" +msgstr "无法为 % 个独有列名 [sum(lapply(l,ncol))] 的上界分配内存。" + +#: rbindlist.c:102 +#, c-format +msgid "Failed to allocate nuniq=%d items working memory in rbindlist.c" +msgstr "错误发生于 rbindlist.c,无法分配 nuniq=%d 项工作内存。" + +#: rbindlist.c:136 +#, c-format +msgid "Failed to allocate ncol=%d items working memory in rbindlist.c" +msgstr "错误发生于 rbindlist.c,无法分配 ncol=%d 项工作内存。" + +#: rbindlist.c:191 +msgid "" +"Internal error: usenames==NA but fill=TRUE. usenames should have been set to " +"TRUE earlier with warning." +msgstr "" +"内部错误:usenames==NA 但是 fill=TRUE。usenames应该已在警告之前被设置为了 " +"TRUE。" + +#: rbindlist.c:196 +msgid "" +" use.names='check' (default from v1.12.2) emits this message and proceeds as " +"if use.names=FALSE for backwards compatibility. See news item 5 in v1.12.2 " +"for options to control this message." +msgstr "" +"use.names='check'(从v1.12.2版本开始的默认值)发出该消息并为了向后兼容按照" +"use.names=FALSE执行。有关控制此消息的选项,请参见 v1.12.2 更新信息中的第 5 " +"项。" + +#: rbindlist.c:206 +msgid "" +"Internal error: could not find the first column name not present in earlier " +"item" +msgstr "内部错误:无法找到一个不存在于之前项中的列名。" + +#: rbindlist.c:210 +#, c-format +msgid "" +"Column %d ['%s'] of item %d is missing in item %d. Use fill=TRUE to fill " +"with NA (NULL for list columns), or use.names=FALSE to ignore column names.%s" +msgstr "" +"第 %3$d 项的第 %1$d 列 ['%2$s'] 在第 %4$d 项中并不存在。请使用 fill=TRUE 以用" +"NA (或 NULL 若该列为列表(list))填充,或使用 use.names=FALSE 以忽略列" +"名。%5$s" + +#: rbindlist.c:218 +#, c-format +msgid "" +"Internal error: usenames==NA but an out-of-order name has been found in an " +"item with no names or the first item. [%d]" +msgstr "内部错误:usenames==NA 但某项或第一项中存在一个无序的名字。 [%d]" + +#: rbindlist.c:219 +#, c-format +msgid "" +"Column %d ['%s'] of item %d appears in position %d in item %d. Set use." +"names=TRUE to match by column name, or use.names=FALSE to ignore column " +"names.%s" +msgstr "" +"第 %3$d 项的第 %1$d 列 ['%2$s'] 出现在第 %5$d 项的第 %4$d 列。设置use." +"names=TRUE 以按列名匹配,或使用 use.names=FALSE 以忽视列名。%6$s" + +#: rbindlist.c:228 +msgid "" +"options()$datatable.rbindlist.check is set but is not a single string. See " +"news item 5 in v1.12.2." +msgstr "" +"options()$datatable.rbindlist.check 已设置但并非单个字符串。参见 v1.12.2更新" +"信息中的第 5 项。" + +#: rbindlist.c:235 +#, c-format +msgid "" +"options()$datatable.rbindlist.check=='%s' which is not " +"'message'|'warning'|'error'|'none'. See news item 5 in v1.12.2." +msgstr "" +"options()$datatable.rbindlist.check=='%s' 不" +"是'message'|'warning'|'error'|'none'。参见 v1.12.2 更新信息中的第 5 项。" + +#: rbindlist.c:298 +#, c-format +msgid "" +"Column %d of item %d has type 'factor' but has no levels; i.e. malformed." +msgstr "" +"第%2$d 项的第 %1$d 列为因子('factor')类型却没有因子水平(levels),格式错" +"误。" + +#: rbindlist.c:316 +#, c-format +msgid "" +"Class attribute on column %d of item %d does not match with column %d of " +"item %d." +msgstr "第 %2$d 项的第 %1$d 列的类属性与第 %4$d 项的第 %3$d列的不匹配。" + +#: rbindlist.c:326 +#, c-format +msgid "" +"Internal error: column %d of result is determined to be integer64 but " +"maxType=='%s' != REALSXP" +msgstr "" +"内部错误:结果中的第 %d 列应为 integer64 类型,但maxType=='%s' != REALSXP" + +#: rbindlist.c:362 +#, c-format +msgid "" +"Failed to allocate working memory for %d ordered factor levels of result " +"column %d" +msgstr "未能为结果中第 %d 列的 %d 个有序因子水平分配工作内存" + +#: rbindlist.c:383 +#, c-format +msgid "" +"Column %d of item %d is an ordered factor but level %d ['%s'] is missing " +"from the ordered levels from column %d of item %d. Each set of ordered " +"factor levels should be an ordered subset of the first longest. A regular " +"factor will be created for this column." +msgstr "" +"第 %2$d 项的第 %1$d 列为一有序因子(ordered factor),但第 %3$d 个水平" +"(level)['%4$s']在第 %6$d 项第 %5$d 列的有序因子水平中缺失。每组有序因子水平" +"应为其中最长有序因子水平的子集。该列将被创建为一非有序因子列。" + +#: rbindlist.c:388 +#, c-format +msgid "" +"Column %d of item %d is an ordered factor with '%s'<'%s' in its levels. But " +"'%s'<'%s' in the ordered levels from column %d of item %d. A regular factor " +"will be created for this column due to this ambiguity." +msgstr "" +"第 %2$d 项的第 %1$d 列中有序因子水平 '%3$s'<'%4$s'。但在第 %8$d 项第 %7$d 列" +"的有序因子水平中却 '%5$s'<'%6$s'。由于这种模糊性,该列将被创建为一非有序因子" +"列。" + +#: rbindlist.c:433 +#, c-format +msgid "" +"Failed to allocate working memory for %d factor levels of result column %d " +"when reading item %d of item %d" +msgstr "" +"当读取第%4$d项的第%3$d个子项时,无法为第%2$d列的%1$d个因素水平分配工作内存" + +#: rbindlist.c:523 +#, c-format +msgid "Column %d of item %d: %s" +msgstr "第 %2$d 项的第 %1$d 列: %3$s" + +#: reorder.c:17 +#, c-format +msgid "Item %d of list is type '%s' which isn't yet supported (SIZEOF=%d)" +msgstr "列表的第 %d 项是 '%s' 类型,其尚不被支持 (SIZEOF=%d)" + +#: reorder.c:19 +#, c-format +msgid "" +"Column %d is length %d which differs from length of column 1 (%d). Invalid " +"data.table." +msgstr "列 %d 的长度是 %d ,与列 1 (%d) 的长度不同。数据表无效。" + +#: reorder.c:27 +#, c-format +msgid "" +"reorder accepts vectors but this non-VECSXP is type '%s' which isn't yet " +"supported (SIZEOF=%d)" +msgstr "" +"重新排序需要输入向量,但输入了 '%s' 类型的非向量对象,目前并不支持 (SIZEOF=" +"%d)" + +#: reorder.c:28 +msgid "" +"Internal error in reorder.c: cannot reorder an ALTREP vector. Please see " +"NEWS item 2 in v1.11.4 and report this as a bug." +msgstr "" +"reorder.c中的内部错误:无法重新排序ALTREP向量。请参阅 v1.11.4 中\"新闻" +"\"(NEWS)的项目2,并将其作为 BUG 上报。" + +#: reorder.c:33 +msgid "order must be an integer vector" +msgstr "排序必须是整数向量" + +#: reorder.c:34 +#, c-format +msgid "nrow(x)[%d]!=length(order)[%d]" +msgstr "nrow(x)[%d] 不等于 length(order)[%d]" + +#: reorder.c:51 +#, c-format +msgid "" +"Item %d of order (%d) is either NA, out of range [1,%d], or is duplicated. " +"The new order must be a strict permutation of 1:n" +msgstr "" +"排序(%2$d)的 %1$d 项为 NA,超出范围 [1,%3$d],或与其他项重复。新的排序必须" +"为 1:n 的排列" + +#: reorder.c:105 +msgid "dt passed to setcolorder has no names" +msgstr "setcolorder读取到的dt并没有名字" + +#: reorder.c:107 +#, c-format +msgid "Internal error: dt passed to setcolorder has %d columns but %d names" +msgstr "内部错误: setcolorder读取到的dt有 %d 列但是有 %d 个名字。" + +#: shift.c:15 +#, c-format +msgid "" +"type '%s' passed to shift(). Must be a vector, list, data.frame or data.table" +msgstr "" +"传递给 shift() 的 '%s' 类型,必须是向量、列表、data.frame 或 data.table" + +#: shift.c:22 shift.c:26 +msgid "" +"Internal error: invalid type for shift(), should have been caught before. " +"please report to data.table issue tracker" +msgstr "" +"内部错误:shift() 的类型无效,请提前排查。请向 data.table 提交问题追踪" +"(issue tracker)报告" + +#: shift.c:29 +msgid "Internal error: k must be integer" +msgstr "内部错误:k 必须是整数" + +#: shift.c:31 +#, c-format +msgid "Item %d of n is NA" +msgstr "n 的第 %d 项是NA" + +#: shift.c:170 +#, c-format +msgid "Unsupported type '%s'" +msgstr "不支持 '%s' 类型" + +#: snprintf.c:192 snprintf.c:195 snprintf.c:198 snprintf.c:201 snprintf.c:204 +#: snprintf.c:207 snprintf.c:210 snprintf.c:213 snprintf.c:216 snprintf.c:217 +#: snprintf.c:220 snprintf.c:223 snprintf.c:226 snprintf.c:229 snprintf.c:232 +#: snprintf.c:235 snprintf.c:238 snprintf.c:241 snprintf.c:244 +#, c-format +msgid "dt_win_snprintf test %d failed: %s" +msgstr "dt_win_snprintf 测试 %d 失败了: %s" + +#: subset.c:7 +#, c-format +msgid "Internal error: subsetVectorRaw length(ans)==%d n=%d" +msgstr "内部错误: subsetVectorRaw ans length(ans)==%d n=%d" + +#: subset.c:101 +#, c-format +msgid "" +"Internal error: column type '%s' not supported by data.table subset. All " +"known types are supported so please report as bug." +msgstr "" +"内部错误:data.table 子集不支持列类型 '%s' 。已知所有类型均被支持,因此请提交" +"此BUG。" + +#: subset.c:110 subset.c:134 +#, c-format +msgid "Internal error. 'idx' is type '%s' not 'integer'" +msgstr "内部错误:'idx' 是 '%s' 类型,而非 '整数'" + +#: subset.c:135 +#, c-format +msgid "" +"Internal error. 'maxArg' is type '%s' and length %d, should be an integer " +"singleton" +msgstr "内部错误:'maxArg' 是 '%s' 类型,长度为 %d ,应该是单一整数" + +#: subset.c:136 +msgid "Internal error: allowOverMax must be TRUE/FALSE" +msgstr "内部错误:allowOverMax 必须是 TRUE 或 FALSE" + +#: subset.c:138 +#, c-format +msgid "Internal error. max is %d, must be >= 0." +msgstr "内部错误。最大值是 %d ,且必须 >= 0。" + +#: subset.c:162 +#, c-format +msgid "i[%d] is %d which is out of range [1,nrow=%d]" +msgstr "i[%d] 是 %d ,超出 [1,nrow=%d] 的范围" + +#: subset.c:174 +#, c-format +msgid "" +"Item %d of i is %d and item %d is %d. Cannot mix positives and negatives." +msgstr "i 的第 %d 项是 %d ,第 %d 项是 %d 。正负不能混用。" + +#: subset.c:184 +#, c-format +msgid "Item %d of i is %d and item %d is NA. Cannot mix negatives and NA." +msgstr "i 的第 %d 项是 %d ,第 %d 项是 NA 。负值和 NA 不能混用。" + +#: subset.c:220 +#, c-format +msgid "" +"Item %d of i is %d but there are only %d rows. Ignoring this and %d more " +"like it out of %d." +msgstr "" +"i 的第 %d 项是 %d ,但只有 %d 行。忽略这项以及其他相似的 %d 项(共 %d 项)。" + +#: subset.c:222 +#, c-format +msgid "" +"Item %d of i is %d which removes that item but that has occurred before. " +"Ignoring this dup and %d other dups." +msgstr "" +"i 的第 %d 项是 %d ,它删除了这项但此操作之前发生过。忽略该重复以及其他 %d 个" +"重复。" + +#: subset.c:236 +#, c-format +msgid "Column %d is NULL; malformed data.table." +msgstr "%d 列为空(NULL);data.table 格式错误。" + +#: subset.c:239 +#, c-format +msgid "Column %d ['%s'] is a data.frame or data.table; malformed data.table." +msgstr "%d ['%s'] 列是 data.frame 或 data.table; data.table 格式错误。" + +#: subset.c:244 +#, c-format +msgid "" +"Column %d ['%s'] is length %d but column 1 is length %d; malformed data." +"table." +msgstr "%d ['%s'] 长度为 %d ,而列 1 的长度为 %d ;data.table 格式错误。" + +#: subset.c:260 +#, c-format +msgid "Internal error. Argument 'x' to CsubsetDT is type '%s' not 'list'" +msgstr "内部错误:CsubsetDT 的参数 'x' 是 '%s' 类型而非列表" + +#: subset.c:273 +#, c-format +msgid "Internal error. Argument 'cols' to Csubset is type '%s' not 'integer'" +msgstr "内部错误:CsubsetDT 的参数 'cols' 是 '%s' 类型而非整数" + +#: subset.c:350 +msgid "" +"Internal error: NULL can not be subset. It is invalid for a data.table to " +"contain a NULL column." +msgstr "内部错误:空集(NULL)不能作为子集。data.table 包含空列是无效的。" + +#: subset.c:352 +msgid "" +"Internal error: CsubsetVector is internal-use-only but has received " +"negatives, zeros or out-of-range" +msgstr "" +"内部错误:CsubsetVector 仅供内部使用,但收到了负数、零或其他超出范围的值" + +#: transpose.c:9 +msgid "l must be a list." +msgstr "l 必须是列表" + +#: transpose.c:13 +msgid "ignore.empty should be logical TRUE/FALSE." +msgstr "ignore.empty 应该是逻辑类型 TRUE 或 FALSE。" + +#: transpose.c:16 +msgid "" +"keep.names should be either NULL, or the name of the first column of the " +"result in which to place the names of the input" +msgstr "keep.names 应该是空(NULL),或者为放置输入名称的结果中第一列的列名" + +#: transpose.c:19 +msgid "fill must be a length 1 vector, such as the default NA" +msgstr "fill 必须是长度为 1 的向量,例如默认值 NA" + +#: transpose.c:28 +#, c-format +msgid "Item %d of list input is not an atomic vector" +msgstr "列表输入的第 %d 项不是原子(atomic)向量" + +#: types.c:55 +msgid "internal error: status, nx, nk must be integer" +msgstr "内部错误:status, nx, nk 必须是整数" + +#: uniqlist.c:14 +msgid "Internal error: uniqlist has not been passed a list of columns" +msgstr "内部错误:uniqlist 尚未传递列" + +#: uniqlist.c:17 +msgid "Internal error: uniqlist has been passed a non-integer order" +msgstr "内部错误:uniqlist 已经传递非整数序列" + +#: uniqlist.c:18 +msgid "Internal error: uniqlist has been passed a length-0 order" +msgstr "内部错误:uniqlist 已经传递长度为 0 的序列" + +#: uniqlist.c:19 +#, c-format +msgid "Internal error: uniqlist has been passed length(order)==%d but nrow==%d" +msgstr "内部错误:uniqlist 已经传递长度为 %d 的序列,而行数是 %d" + +#: uniqlist.c:96 uniqlist.c:128 uniqlist.c:209 uniqlist.c:246 uniqlist.c:319 +#, c-format +msgid "Type '%s' not supported" +msgstr "类型 '%s' 不被支持" + +#: uniqlist.c:149 +msgid "Input argument 'x' to 'uniqlengths' must be an integer vector" +msgstr "输入到 'uniqlengths' 的参数 'x' 必须是整数向量" + +#: uniqlist.c:150 +msgid "" +"Input argument 'n' to 'uniqlengths' must be an integer vector of length 1" +msgstr "输入到 'uniqlengths' 的参数 'n' 必须是长度为 1 的整数向量" + +#: uniqlist.c:168 +msgid "cols must be an integer vector with length >= 1" +msgstr "cols必须是一个长度大于等于1的整数向量" + +#: uniqlist.c:172 +#, c-format +msgid "Item %d of cols is %d which is outside range of l [1,length(l)=%d]" +msgstr "列的%d项是%d,它超出l的所在区间[1,length(l)=%d]" + +#: uniqlist.c:175 +#, c-format +msgid "" +"All elements to input list must be of same length. Element [%d] has length " +"% != length of first element = %." +msgstr "" +"列表的所有元素必须是同样的长度。元素[%d]的长度%不等于第一个元素的长" +"度%" + +#: uniqlist.c:256 +msgid "Internal error: nestedid was not passed a list length 1 or more" +msgstr "内部错误:nestedid并不是一个长度大于或者等于1的列表" + +#: uniqlist.c:263 +#, c-format +msgid "Internal error: nrows[%d]>0 but ngrps==0" +msgstr "内部错误:nrows[%d]>0但是but ngrps==0" + +#: uniqlist.c:265 +msgid "cols must be an integer vector of positive length" +msgstr "cols必须是一个长度大于零的整数向量" + +#: uniqlist.c:350 +msgid "x is not a logical vector" +msgstr "x不是一个逻辑向量" + +#: utils.c:80 +#, c-format +msgid "Unsupported type '%s' passed to allNA()" +msgstr "allNA() 不支持'%s'类型" + +#: utils.c:99 +msgid "'x' argument must be data.table compatible" +msgstr "'x' 必须为data.table支持的类型" + +#: utils.c:101 +msgid "'check_dups' argument must be TRUE or FALSE" +msgstr "参数'check_dups'必须为TRUE或者是FALSE" + +#: utils.c:117 +msgid "" +"argument specifying columns is type 'double' and one or more items in it are " +"not whole integers" +msgstr "指定列的参数是一个双精度类型而其中至少有一个元素不是整数" + +#: utils.c:123 +#, c-format +msgid "argument specifying columns specify non existing column(s): cols[%d]=%d" +msgstr "指定列的参数指定了不存在的列: cols[%d]=%d" + +#: utils.c:128 +msgid "'x' argument data.table has no names" +msgstr "data.table的参数x并没有名字" + +#: utils.c:133 +#, c-format +msgid "" +"argument specifying columns specify non existing column(s): cols[%d]='%s'" +msgstr "指定列的参数指定了不存在的列: cols[%d]='%s'" + +#: utils.c:136 +msgid "argument specifying columns must be character or numeric" +msgstr "指定列的参数必须是字符或者是数值" + +#: utils.c:139 +msgid "argument specifying columns specify duplicated column(s)" +msgstr "指定列的参数指定了重复的列" + +#: utils.c:145 +#, c-format +msgid "%s: fill argument must be length 1" +msgstr "%s:fill参数的长度必须为1" + +#: utils.c:178 +#, c-format +msgid "%s: fill argument must be numeric" +msgstr "%s:fill参数必须为数值类型" + +#: utils.c:281 +#, c-format +msgid "Internal error: unsupported type '%s' passed to copyAsPlain()" +msgstr "内部错误:copyAsPlain()不支持类型为'%s'的参数" + +#: utils.c:286 +#, c-format +msgid "Internal error: copyAsPlain returning ALTREP for type '%s'" +msgstr "内部错误:copyAsPlain 返回了类型为 '%s' 的 ALTREP" + +#: utils.c:330 +#, c-format +msgid "Found and copied %d column%s with a shared memory address\n" +msgstr "发现并拷贝了具有相同的内存地址的%d列%s\n" + +#: vecseq.c:13 +msgid "x must be an integer vector" +msgstr "x必须为一个整数向量" + +#: vecseq.c:14 +msgid "len must be an integer vector" +msgstr "len必须为一个整数向量" + +#: vecseq.c:15 +msgid "x and len must be the same length" +msgstr "x和len必须长度一致" + +#: vecseq.c:21 +msgid "" +"Join results in more than 2^31 rows (internal vecseq reached physical " +"limit). Very likely misspecified join. Check for duplicate key values in i " +"each of which join to the same group in x over and over again. If that's ok, " +"try by=.EACHI to run j for each group to avoid the large allocation. " +"Otherwise, please search for this error message in the FAQ, Wiki, Stack " +"Overflow and data.table issue tracker for advice." +msgstr "" +"连接后将生成超过2^31行(已达内部的vecseq的物理极限)。这很可能是一个错误的连" +"接操作。请检查i中是否存在重复的键值(key values),导致x中对应的组反复连接。" +"若确定重复的连接可授受,可尝试 by=.EACHI 以使j中的语句仅在每个 i 中对应的组运" +"行以避免大量的内存分配。否则,请在常见问题(FAQ)、维基(Wiki)、Stack " +"Overflow 和 data.table GitHub Issue中寻求帮助。" + +#: vecseq.c:25 +msgid "clamp must be a double vector length 1" +msgstr "clamp 必须为一个长度为1的双精度向量" + +#: vecseq.c:27 +msgid "clamp must be positive" +msgstr "clamp必须为正数" + +#: vecseq.c:28 +#, c-format +msgid "" +"Join results in %d rows; more than %d = nrow(x)+nrow(i). Check for duplicate " +"key values in i each of which join to the same group in x over and over " +"again. If that's ok, try by=.EACHI to run j for each group to avoid the " +"large allocation. If you are sure you wish to proceed, rerun with allow." +"cartesian=TRUE. Otherwise, please search for this error message in the FAQ, " +"Wiki, Stack Overflow and data.table issue tracker for advice." +msgstr "" +"连接后生成%d行;多于%d = nrow(x)+nrow(i)。请检查i中是否存在重复的键值(key " +"values),导致x中对应的组反复连接。若确定重复的连接可授受,可尝试 by=.EACHI " +"以使j中的语句仅在每个 i 中对应的组运行以避免大量的内存分配。如果确认要继续," +"请设置cartesian=TRUE 并重新运行。否则,请在常见问题(FAQ)、维基(Wiki)、" +"Stack Overflow 和 data.table GitHub Issue中寻求帮助。" + +#: wrappers.c:11 +msgid "Attribute name must be a character vector of length 1" +msgstr "属性的名字必须为一个长度为1的字符向量" + +#: wrappers.c:16 +msgid "" +"Internal structure doesn't seem to be a list. Can't set class to be 'data." +"table' or 'data.frame'. Use 'as.data.table()' or 'as.data.frame()' methods " +"instead." +msgstr "" +"内部结构并不非一个列表。无法将目标的类型设置为一个data.table或data.frame。请" +"使用'as.data.table()' 或 'as.data.frame()'." + +#: wrappers.c:66 +msgid "First argument to setlistelt must be a list()" +msgstr "setlistelt的第一个参数必须是一个列表" + +#: wrappers.c:67 +msgid "Second argument to setlistelt must a length 1 integer vector" +msgstr "setlistelt的第二个参数必须为一个长度为1的整数向量" + +#: wrappers.c:69 +#, c-format +msgid "i (%d) is outside the range of items [1,%d]" +msgstr "i (%d)超出了[1,%d]的范围" + +#: wrappers.c:91 +msgid "x isn't a VECSXP" +msgstr "x并非一个VECSXP" + +#: wrappers.c:106 +#, c-format +msgid "" +"dim.data.table expects a data.table as input (which is a list), but seems to " +"be of type %s" +msgstr "" +"dim.data.table的参数必须为一个data.table(实质为一个列表),但输入参数为%s类" +"型" From d9a779b80d8f0a4000c138206ec647719011cc72 Mon Sep 17 00:00:00 2001 From: Michael Chirico Date: Thu, 8 Jul 2021 19:20:20 -0700 Subject: [PATCH 11/12] fix tests (bad merge) --- inst/tests/tests.Rraw | 6 +++--- src/bmerge.c | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/inst/tests/tests.Rraw b/inst/tests/tests.Rraw index ebd0a3c1ca..d4fb229807 100644 --- a/inst/tests/tests.Rraw +++ b/inst/tests/tests.Rraw @@ -13428,7 +13428,7 @@ test(1962.004, duplicated(DT, by = -1L), test(1962.005, duplicated(DT, by = 'y'), error = 'received non-existing column*.*y') test(1962.0061, duplicated(data.table(NULL)), logical(0L)) -test(1962.0062, duplicated(data.table(a = 1L), by = character()), logical()) +test(1962.0062, duplicated(data.table(a = 1L), by = character()), FALSE) test(1962.007, unique(DT, incomparables = TRUE), error = 'not used (yet)') @@ -17559,7 +17559,7 @@ test(2182.5, melt(DT.wide, measure.vars=list(a=c(NA,1), b=2:3), na.rm=TRUE)[, .( measurev = function(cols)cols # user-defined function for computing measure.vars, same name as data.table::measure but user-defined version should be used. test(2183.00001, melt(DT.wide, measure.vars=measurev()), data.table(variable=factor(c("a2","b1","b2")), value=c(2,1,2))) measurev = list("foo", "bar")#measurev below should not use this since it is not a function. -test(2183.00002, melt(DTid, measure.vars=measurev(list(value.name=NULL, num=as.complex), pattern="([ab])([12])")), error="Type 'complex' not supported for joining/merging") +test(2183.00002, melt(DTid, measure.vars=measurev(list(value.name=NULL, num=as.complex), pattern="([ab])([12])")), error="Type 'complex' is not supported for joining/merging") test(2183.00004, melt(DTid, measure.vars=measurev(list(value.name=NULL, istr=NULL), pattern="([ab])([12])"))[order(b)], data.table(id=1, istr=paste(c(1,2)), a=c(NA, 2), b=c(1,2))) test(2183.00005, melt(DTid, measure.vars=measurev(list(column=NULL, istr=NULL), pattern="([ab])([12])", multiple.keyword="column"))[order(b)], data.table(id=1, istr=paste(c(1,2)), a=c(NA, 2), b=c(1,2)))#same computation but different multiple.keyword iris.dt = data.table(datasets::iris) @@ -17582,7 +17582,7 @@ test(2183.00060, melt(DTid, measure.vars=measurev(list(letter=myfac, value.name= measure = function(cols)cols # user-defined function for computing measure.vars, same name as data.table::measure but user-defined version should be used. test(2183.01, melt(DT.wide, measure.vars=measure()), data.table(variable=factor(c("a2","b1","b2")), value=c(2,1,2))) measure = list("foo", "bar")#measure below should not use this since it is not a function. -test(2183.02, melt(DTid, measure.vars=measure(value.name, num=as.complex, pattern="([ab])([12])")), error="Type 'complex' not supported for joining/merging") +test(2183.02, melt(DTid, measure.vars=measure(value.name, num=as.complex, pattern="([ab])([12])")), error="Type 'complex' is not supported for joining/merging") test(2183.03, melt(DTid, measure.vars=structure(list(a=c(NA,"a2"),b=c("b1","b2")), variable_table=data.table(number=as.complex(1:2)))), error="variable_table does not support column type 'complex' for column 'number'") test(2183.04, melt(DTid, measure.vars=measure(value.name, istr, pattern="([ab])([12])"))[order(b)], data.table(id=1, istr=paste(c(1,2)), a=c(NA, 2), b=c(1,2))) test(2183.05, melt(DTid, measure.vars=measure(column, istr, pattern="([ab])([12])", multiple.keyword="column"))[order(b)], data.table(id=1, istr=paste(c(1,2)), a=c(NA, 2), b=c(1,2)))#same computation but different multiple.keyword diff --git a/src/bmerge.c b/src/bmerge.c index 6fe5af2bcd..48508ddfba 100644 --- a/src/bmerge.c +++ b/src/bmerge.c @@ -67,7 +67,7 @@ SEXP bmerge(SEXP idt, SEXP xdt, SEXP icolsArg, SEXP xcolsArg, SEXP isorted, SEXP int xt = TYPEOF(VECTOR_ELT(xdt, xcols[col]-1)); if (iN && it!=xt) error(_("typeof x.%s (%s) != typeof i.%s (%s)"), CHAR(STRING_ELT(getAttrib(xdt,R_NamesSymbol),xcols[col]-1)), type2char(xt), CHAR(STRING_ELT(getAttrib(idt,R_NamesSymbol),icols[col]-1)), type2char(it)); if (iN && it!=LGLSXP && it!=INTSXP && it!=REALSXP && it!=STRSXP) - error(_("Type '%s' not supported for joining/merging"), type2char(it)); + error(_("Type '%s' is not supported for joining/merging"), type2char(it)); } // rollArg, rollendsArg From 20e5dfd1f54d17571a42fc48333e1dce3924d623 Mon Sep 17 00:00:00 2001 From: Matt Dowle Date: Thu, 26 Aug 2021 18:18:47 -0600 Subject: [PATCH 12/12] I missed one IS_TRUE_OR_FALSE when resolving conflicts --- src/gsumm.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/gsumm.c b/src/gsumm.c index e9f7b50931..be3b0f7855 100644 --- a/src/gsumm.c +++ b/src/gsumm.c @@ -576,7 +576,7 @@ SEXP gmean(SEXP x, SEXP narmArg) { if (inherits(x, "factor")) error(_("%s is not meaningful for factors."), "mean"); - if (!isLogical(narmArg) || LENGTH(narmArg)!=1 || LOGICAL(narmArg)[0]==NA_LOGICAL) + if (!IS_TRUE_OR_FALSE(narmArg)) error(_("%s must be TRUE or FALSE"), "na.rm"); const bool narm = LOGICAL(narmArg)[0]; const int n = (irowslen == -1) ? length(x) : irowslen;