From noreply at r-forge.r-project.org Wed Sep 9 17:14:44 2015 From: noreply at r-forge.r-project.org (noreply at r-forge.r-project.org) Date: Wed, 9 Sep 2015 17:14:44 +0200 (CEST) Subject: [Dplr-commits] r1001 - in pkg/dplR: . R inst/po/fi/LC_MESSAGES man po Message-ID: <20150909151444.ADCD6187ACB@r-forge.r-project.org> Author: mvkorpel Date: 2015-09-09 17:14:43 +0200 (Wed, 09 Sep 2015) New Revision: 1001 Modified: pkg/dplR/ChangeLog pkg/dplR/DESCRIPTION pkg/dplR/R/helpers.R pkg/dplR/R/read.crn.R pkg/dplR/R/read.tridas.R pkg/dplR/R/read.tucson.R pkg/dplR/R/redfit.R pkg/dplR/R/skel.plot.R pkg/dplR/R/write.compact.R pkg/dplR/R/write.tucson.R pkg/dplR/inst/po/fi/LC_MESSAGES/R-dplR.mo pkg/dplR/man/skel.plot.Rd pkg/dplR/po/R-dplR.pot pkg/dplR/po/R-fi.po Log: * In various .R files: - Argument values are checked more thoroughly: 'prec', 'header'. - 'if (condition) optionA else optionB' is used instead of 'ifelse(condition, optionA, optionB)' where appropriate. - Number of characters is used instead of display width where appropriate, or vice versa. Counterparts: strtrim() and substr(); nchar(type = "width") and nchar() with default 'type'; format(string, width = w, justify = "left") and stringr::str_pad(string, w, side="right"). * Message translations / templates were updated * Note / TODO: There is still code where the potential difference between the number of characters and the display width of strings is not taken into account or the two are mixed inappropriately. Consider the use of encodeString() in write.crn() and write.tucson(). Modified: pkg/dplR/ChangeLog =================================================================== --- pkg/dplR/ChangeLog 2015-08-06 10:43:54 UTC (rev 1000) +++ pkg/dplR/ChangeLog 2015-09-09 15:14:43 UTC (rev 1001) @@ -13,6 +13,18 @@ ------------- - Added treeMean function. +Various .R files +---------------- +- Argument values are checked more thoroughly: 'prec', 'header'. +- 'if (condition) optionA else optionB' is used instead of + 'ifelse(condition, optionA, optionB)' where appropriate. +- Number of characters is used instead of display width where + appropriate, or vice versa. Counterparts: + strtrim() and substr(); + nchar(type = "width") and nchar() with default 'type'; + format(string, width = w, justify = "left") and + stringr::str_pad(string, w, side="right"). + * CHANGES IN dplR VERSION 1.6.3 File: crn.plot.R Modified: pkg/dplR/DESCRIPTION =================================================================== --- pkg/dplR/DESCRIPTION 2015-08-06 10:43:54 UTC (rev 1000) +++ pkg/dplR/DESCRIPTION 2015-09-09 15:14:43 UTC (rev 1001) @@ -3,7 +3,7 @@ Type: Package Title: Dendrochronology Program Library in R Version: 1.6.4 -Date: 2015-08-06 +Date: 2015-09-09 Authors at R: c(person("Andy", "Bunn", role = c("aut", "cph", "cre", "trl"), email = "andy.bunn at wwu.edu"), person("Mikko", "Korpela", role = c("aut", "trl")), person("Franco", "Biondi", Modified: pkg/dplR/R/helpers.R =================================================================== --- pkg/dplR/R/helpers.R 2015-08-06 10:43:54 UTC (rev 1000) +++ pkg/dplR/R/helpers.R 2015-09-09 15:14:43 UTC (rev 1001) @@ -170,7 +170,7 @@ if (is.null(limit)) { new.name <- paste0(orig.name, last.part) } else { - new.name <- paste0(strtrim(orig.name, limit - idx.length), + new.name <- paste0(substr(orig.name, 1, limit - idx.length), last.part) } } @@ -215,7 +215,7 @@ write.map <- TRUE } rename.flag[over.limit] <- TRUE - x.cut[over.limit] <- strtrim(x.cut[over.limit], limit) + x.cut[over.limit] <- substr(x.cut[over.limit], 1, limit) } } unique.cut <- unique(x.cut) @@ -245,7 +245,7 @@ } if (!is.null(limit)) { - x.cut <- strtrim(x.cut, limit-1) + x.cut <- substr(x.cut, 1, limit - 1) } x.cut[y != ""] <- NA unique.cut <- unique(x.cut) # may contain NA Modified: pkg/dplR/R/read.crn.R =================================================================== --- pkg/dplR/R/read.crn.R 2015-08-06 10:43:54 UTC (rev 1000) +++ pkg/dplR/R/read.crn.R 2015-09-09 15:14:43 UTC (rev 1001) @@ -23,8 +23,8 @@ domain="R-dplR")) is.head <- FALSE # No header lines } - } else if(!is.logical(header)){ - stop("'header' must be NULL or logical") + } else if(!is.logical(header) || length(header) != 1 || is.na(header)){ + stop("'header' must be NULL, TRUE or FALSE") } else{ is.head <- header } @@ -50,7 +50,7 @@ ## if nchar <=63 then there is a stats line nlines <- length(readLines(con, n=-1)) ## Read file - skip.lines <- ifelse(is.head, 3, 0) + skip.lines <- if (is.head) 3 else 0 ## Do nothing. read.fwf closes (and destroys ?!?) the file connection on.exit() ## Get chron stats if needed Modified: pkg/dplR/R/read.tridas.R =================================================================== --- pkg/dplR/R/read.tridas.R 2015-08-06 10:43:54 UTC (rev 1000) +++ pkg/dplR/R/read.tridas.R 2015-09-09 15:14:43 UTC (rev 1001) @@ -785,9 +785,11 @@ }, firstYear = function(x, atts, ...) { tag.stack[stack.pointer <<- stack.pointer + 1] <<- "firstYear" - firstYear.suffix <<- ifelse(is.null(atts), - as.character(NA), - atts["suffix"]) + firstYear.suffix <<- if (is.null(atts)) { + as.character(NA) + } else { + atts["suffix"] + } }, heartwood = function(x, atts, ...) { grandparent.element <- tag.stack[stack.pointer - 1] @@ -802,16 +804,20 @@ }, identifier = function(x, atts, ...){ tag.stack[stack.pointer <<- stack.pointer + 1] <<- "identifier" - domain.text <<- ifelse(is.null(atts), - as.character(NA), - atts["domain"]) + domain.text <<- if (is.null(atts)) { + as.character(NA) + } else { + atts["domain"] + } }, ## A reference to an identifier in the same document idRef = function(x, atts, ...) { tag.stack[stack.pointer <<- stack.pointer + 1] <<- "idRef" - link.idRef <<- ifelse(is.null(atts), - as.character(NA), - atts["ref"]) + link.idRef <<- if (is.null(atts)) { + as.character(NA) + } else { + atts["ref"] + } }, laboratory = function(...) { tag.stack[stack.pointer <<- stack.pointer + 1] <<- "laboratory" @@ -835,9 +841,11 @@ }, lastYear = function(x, atts, ...) { tag.stack[stack.pointer <<- stack.pointer + 1] <<- "lastYear" - lastYear.suffix <<- ifelse(is.null(atts), - as.character(NA), - atts["suffix"]) + lastYear.suffix <<- if (is.null(atts)) { + as.character(NA) + } else { + atts["suffix"] + } }, measurementSeries = function(...) { tag.stack[stack.pointer <<- stack.pointer + 1] <<- @@ -853,9 +861,11 @@ }, name = function(x, atts, ...) { tag.stack[stack.pointer <<- stack.pointer + 1] <<- "name" - lab.acronym <<- ifelse(is.null(atts), - as.character(NA), - atts["acronym"]) + lab.acronym <<- if (is.null(atts)) { + as.character(NA) + } else { + atts["acronym"] + } }, object = function(...) { parent.element <- tag.stack[stack.pointer] @@ -1039,10 +1049,11 @@ } } if (in.derived.values) { - count.vector[idx.value] <<- - ifelse(no.atts, - as.numeric(NA), - as.numeric(atts["count"])) + count.vector[idx.value] <<- if (no.atts) { + as.numeric(NA) + } else { + as.numeric(atts["count"]) + } } }, values = function(...) { @@ -1104,9 +1115,11 @@ ## A reference URI xLink = function(x, atts, ...) { tag.stack[stack.pointer <<- stack.pointer + 1] <<- "xLink" - link.xLink <<- ifelse(is.null(atts), - as.character(NA), - atts["href"]) + link.xLink <<- if (is.null(atts)) { + as.character(NA) + } else { + atts["href"] + } }, ## Other start tag .startElement = function(name, ...) { Modified: pkg/dplR/R/read.tucson.R =================================================================== --- pkg/dplR/R/read.tucson.R 2015-08-06 10:43:54 UTC (rev 1000) +++ pkg/dplR/R/read.tucson.R 2015-09-09 15:14:43 UTC (rev 1001) @@ -191,13 +191,13 @@ cat(gettext("There does not appear to be a header in the rwl file\n", domain="R-dplR")) } - } else if (!is.logical(header)) { - stop("'header' must be NULL or logical") + } else if (!is.logical(header) || length(header) != 1 || is.na(header)) { + stop("'header' must be NULL, TRUE or FALSE") } else { is.head <- header } - skip.lines <- ifelse(is.head, 3, 0) + skip.lines <- if (is.head) 3 else 0 data1 <- readLines(tfcon, n=skip.lines + 1) if (length(data1) < skip.lines + 1) { stop("file has no data") Modified: pkg/dplR/R/redfit.R =================================================================== --- pkg/dplR/R/redfit.R 2015-08-06 10:43:54 UTC (rev 1000) +++ pkg/dplR/R/redfit.R 2015-09-09 15:14:43 UTC (rev 1001) @@ -747,7 +747,7 @@ precat() gtxt <- gettext("Input:", domain = "R-dplR") precat(gtxt) - precat(rep.int("-", nchar(gtxt))) + precat(rep.int("-", nchar(gtxt, type = "width"))) precat("ofac = ", format(ofac, digits = digits)) precat("hifac = ", format(params[["hifac"]], digits = digits)) precat("n50 = ", format(n50, digits = digits)) @@ -756,7 +756,7 @@ precat() gtxt <- gettext("Initial values:", domain = "R-dplR") precat(gtxt) - precat(rep.int("-", nchar(gtxt))) + precat(rep.int("-", nchar(gtxt, type = "width"))) seed <- x[["seed"]] if (!is.null(seed)) { precat("seed = ", format(seed, digits = digits)) @@ -770,7 +770,7 @@ precat() gtxt <- gettext("Results:", domain = "R-dplR") precat(gtxt) - precat(rep.int("-", nchar(gtxt))) + precat(rep.int("-", nchar(gtxt, type = "width"))) if (is.null(rhopre) || rhopre < 0) { precat(gettextf("Avg. autocorr. coeff., rho = %s", format(x[["rho"]], digits = digits), @@ -800,7 +800,7 @@ gtxt <- gettext("Equality of theoretical and data spectrum: Runs test", domain = "R-dplR") precat(gtxt) - precat(rep.int("-", nchar(gtxt))) + precat(rep.int("-", nchar(gtxt, type = "width"))) rcnt <- x[["rcnt"]] if (!is.null(rcnt)) { runP <- params[["p"]] @@ -810,7 +810,7 @@ format(as.numeric(100 * (1 - runP)), digits = digits), domain = "R-dplR") - nC <- nchar(gtxt[1]) + nC <- nchar(gtxt[1], type = "width") rcritlo <- x[["rcritlo"]] rcrithi <- x[["rcrithi"]] } @@ -839,7 +839,7 @@ precat() gtxt <- gettext("Data Columns:", domain = "R-dplR") precat(gtxt) - precat(rep.int("-", nchar(gtxt))) + precat(rep.int("-", nchar(gtxt, type = "width"))) precat(gettext(" 1: Freq = frequency", domain = "R-dplR")) precat(gettext(" 2: Gxx = spectrum of input data", domain = "R-dplR")) Modified: pkg/dplR/R/skel.plot.R =================================================================== --- pkg/dplR/R/skel.plot.R 2015-08-06 10:43:54 UTC (rev 1000) +++ pkg/dplR/R/skel.plot.R 2015-09-09 15:14:43 UTC (rev 1001) @@ -8,8 +8,9 @@ sname2 <- as.character(sname)[1] if (is.na(sname2)) { sname2 <- "NA" - } else if (Encoding(sname2) == "bytes" || nchar(sname2) > 7) { - stop("'sname' must be a character string less than 8 characters long") + } else if (Encoding(sname2) == "bytes" || + nchar(sname2, type = "width") > 7) { + stop("'sname' must be a character string whose width is less than 8") } } @@ -208,7 +209,12 @@ grid.lines(x=unit(c(start.mm, start.mm), "mm"), y=unit(c(rh, 0), "mm"), gp = gpar(lwd = 2, lineend = "square", linejoin = "round")) - fontsize.sname <- ifelse(nchar(sname2) > 6, 9, 10) + fontsize.sname <- + if (nchar(sname2, type = "width") > 6) { + 9 + } else { + 10 + } grid.polygon(x = c(start.mm, start.mm, start.mm - 2), y = yy1, default.units = "mm", gp=gpar(fill = "black", lineend = "square", Modified: pkg/dplR/R/write.compact.R =================================================================== --- pkg/dplR/R/write.compact.R 2015-08-06 10:43:54 UTC (rev 1000) +++ pkg/dplR/R/write.compact.R 2015-09-09 15:14:43 UTC (rev 1001) @@ -4,7 +4,8 @@ if (!is.data.frame(rwl.df)) { stop("'rwl.df' must be a data.frame") } - if (!(prec == 0.01 || prec == 0.001)) { + if (!is.numeric(prec) || length(prec) != 1 || is.na(prec) || + !(prec == 0.01 || prec == 0.001)) { stop("'prec' must equal 0.01 or 0.001") } if (append && !file.exists(fname)) { @@ -16,7 +17,7 @@ yrs.all <- row.names(rwl.df) line.width <- 80 # max line width - prec.rproc <- ifelse(prec == 0.01, 100, 1000) # reciprocal of precision + prec.rproc <- if (prec == 0.01) 100 else 1000 # reciprocal of precision max.field.width.width <- nchar(nchar(round(max(rwl.df, na.rm=TRUE) * prec.rproc))) max.n.width <- nchar(nrow(rwl.df)) # conservative @@ -79,8 +80,8 @@ ## Write header head1 <- paste0(nyrs, "=N", " ", min.year, "=I", " ") - head2 <- paste0(ifelse(prec == 0.01, -2, -3), "(", n.fields, "F", - field.width, ".0)~") + head2 <- paste0(if (prec == 0.01) "-2" else "-3", "(", + n.fields, "F", field.width, ".0)~") n.space <- line.width - nchar(head1) - nchar(head2) - nchar(rwl.df.name) if (n.space < 1) { ## since names are cut to length, this should not happen Modified: pkg/dplR/R/write.tucson.R =================================================================== --- pkg/dplR/R/write.tucson.R 2015-08-06 10:43:54 UTC (rev 1000) +++ pkg/dplR/R/write.tucson.R 2015-09-09 15:14:43 UTC (rev 1001) @@ -8,7 +8,8 @@ if (!is.data.frame(rwl.df)) { stop("'rwl.df' must be a data.frame") } - if (!(prec == 0.01 || prec == 0.001)) { + if (!is.numeric(prec) || length(prec) != 1 || is.na(prec) || + !(prec == 0.01 || prec == 0.001)) { stop("'prec' must equal 0.01 or 0.001") } header2 <- header @@ -50,8 +51,11 @@ long <- header2$long[1] lead.invs <- header2$lead.invs[1] comp.date <- header2$comp.date[1] - lat.long <- ifelse(nchar(long) > 5, paste0(lat, long), - paste(lat, long, sep=" ")) + lat.long <- if (isTRUE(nchar(long) > 5)) { + paste0(lat, long) + } else { + paste(lat, long, sep=" ") + } yrs <- paste(header2$first.yr[1], header2$last.yr[1], sep=" ") field.name <- @@ -155,9 +159,15 @@ cat(hdr2, line.term, file=rwl.out, sep="") cat(hdr3, line.term, file=rwl.out, sep="") } - na.str <- ifelse(prec == 0.01, 9.99, -9.999) - missing.str <- ifelse(prec == 0.01, -9.99, 0) - prec.rproc <- ifelse(prec == 0.01, 100, 1000) # reciprocal of precision + if (prec == 0.01) { + na.str <- 9.99 + missing.str <- -9.99 + prec.rproc <- 100 # reciprocal of precision + } else { + na.str <- -9.999 + missing.str <- 0 + prec.rproc <- 1000 + } format.year <- sprintf("%%%d.0f", year.width) for (l in seq_len(nseries)) { @@ -178,13 +188,8 @@ ## 1--name.width rwl.df.name <- col.names[l] - rwl.df.width <- nchar(rwl.df.name) ## Pad to name.width - rwl.df.name <- ifelse(rwl.df.width < name.width, - format(rwl.df.name, width=name.width, - justify="left"), - rwl.df.name) - + rwl.df.name <- str_pad(rwl.df.name, name.width, side = "right") for (i in seq_len(n.decades)) { ## up to 4 numbers and a minus sign from long series dec <- decades[i] Modified: pkg/dplR/inst/po/fi/LC_MESSAGES/R-dplR.mo =================================================================== (Binary files differ) Modified: pkg/dplR/man/skel.plot.Rd =================================================================== --- pkg/dplR/man/skel.plot.Rd 2015-08-06 10:43:54 UTC (rev 1000) +++ pkg/dplR/man/skel.plot.Rd 2015-09-09 15:14:43 UTC (rev 1001) @@ -14,8 +14,9 @@ series } \item{yr.vec}{ optional \code{numeric} vector giving years for the tree-ring data } - \item{sname}{ an optional \code{character} string of less than 8 - characters giving the \acronym{ID} for the data } + \item{sname}{ an optional \code{character} string giving the + \acronym{ID} for the data. The width of the string, often identical + to the number of characters, must be less than 8. } \item{filt.weight}{ filter length for the Hanning filter, defaults to 9 } \item{dat.out}{ \code{logical} flag indicating whether to return a \code{data.frame} containing the data. } Modified: pkg/dplR/po/R-dplR.pot =================================================================== --- pkg/dplR/po/R-dplR.pot 2015-08-06 10:43:54 UTC (rev 1000) +++ pkg/dplR/po/R-dplR.pot 2015-09-09 15:14:43 UTC (rev 1001) @@ -1,12 +1,12 @@ # Translation template for messages in dplR R code # Copyright (C) dplR copyright holders # This file is distributed under the same license as the dplR package. -# Mikko Korpela , 2011, 2012, 2014. +# Mikko Korpela , 2011, 2012, 2014, 2015. msgid "" msgstr "" -"Project-Id-Version: dplR 1.6.1\n" +"Project-Id-Version: dplR 1.6.4\n" "Report-Msgid-Bugs-To: mvkorpel at iki.fi\n" -"POT-Creation-Date: 2014-05-27 12:43+0300\n" +"POT-Creation-Date: 2015-09-09 17:01+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -266,6 +266,9 @@ msgid "'series' of length 1 must be a column index to 'rwl'" msgstr "" +msgid "unknown element(s): %s" +msgstr "" + msgid "Detrend series %d of %d" msgstr "" @@ -293,6 +296,15 @@ msgid "'x1' and 'y1' lengths differ" msgstr "" +msgid "'x' must be a matrix-like object" +msgstr "" + +msgid "'x' must have at least 2 rows and 2 columns" +msgstr "" + +msgid "'x' must contain numeric data" +msgstr "" + msgid "use only with \"rwl\" objects" msgstr "" @@ -371,7 +383,7 @@ msgid "There does not appear to be a header in the crn file" msgstr "" -msgid "'header' must be NULL or logical" +msgid "'header' must be NULL, TRUE or FALSE" msgstr "" msgid "file has under 4 lines" @@ -431,6 +443,9 @@ msgid "Pith offsets were found (no missing values). See attribute \"po\"." msgstr "" +msgid "'rwl' must have non-NA names" +msgstr "" + msgid "Site-Tree-Core mask must only contain integral values" msgstr "" @@ -440,9 +455,6 @@ msgid "changed tree-core code \"%s\" to \"%s\"" msgstr "" -msgid "'rwl' must have non-NA names" -msgstr "" - msgid "series names must be at least 1 character long" msgstr "" @@ -839,7 +851,7 @@ msgid "Detrending Options:" msgstr "" -msgid "'sname' must be a character string less than 8 characters long" +msgid "'sname' must be a character string whose width is less than 8" msgstr "" msgid "input series has length of %d" @@ -857,6 +869,9 @@ msgid "empty 'rwl' given, nothing to draw" msgstr "" +msgid "reverting to useRaster=FALSE" +msgstr "" + msgid "'rwl' must have unique, non-NA names" msgstr "" @@ -866,6 +881,15 @@ msgid "'length(rwl)' != 'nrow(ids)'" msgstr "" +msgid "'ids' must be a data.frame with column 'tree'" +msgstr "" + +msgid "'ncol(rwl)' != 'nrow(ids)'" +msgstr "" + +msgid "missing tree IDs are not allowed" +msgstr "" + msgid "a user-coded (pseudo) random number generator is in use" msgstr "" @@ -884,9 +908,6 @@ msgid "'wave.list$period' must be positive" msgstr "" -msgid "reverting to useRaster=FALSE" -msgstr "" - msgid "'rwl.df' must be a data.frame" msgstr "" Modified: pkg/dplR/po/R-fi.po =================================================================== --- pkg/dplR/po/R-fi.po 2015-08-06 10:43:54 UTC (rev 1000) +++ pkg/dplR/po/R-fi.po 2015-09-09 15:14:43 UTC (rev 1001) @@ -1,13 +1,13 @@ # Finnish translations for messages in dplR R code # Copyright (C) dplR copyright holders # This file is distributed under the same license as the dplR package. -# Mikko Korpela , 2011, 2012, 2014. +# Mikko Korpela , 2011, 2012, 2014, 2015. msgid "" msgstr "" -"Project-Id-Version: dplR 1.6.1\n" +"Project-Id-Version: dplR 1.6.4\n" "Report-Msgid-Bugs-To: mvkorpel at iki.fi\n" -"POT-Creation-Date: 2014-05-27 12:43+0300\n" -"PO-Revision-Date: 2014-05-27 14:41+0300\n" +"POT-Creation-Date: 2015-09-09 17:01+0300\n" +"PO-Revision-Date: 2015-09-09 17:09+0300\n" "Last-Translator: Mikko Korpela \n" "Language-Team: Finnish \n" "Language: fi\n" @@ -275,6 +275,9 @@ msgid "'series' of length 1 must be a column index to 'rwl'" msgstr "yhden elementin 'series'-muuttujan t?ytyy olla sarakeindeksi 'rwl':??n" +msgid "unknown element(s): %s" +msgstr "tuntematon elementti: %s" + msgid "Detrend series %d of %d" msgstr "Trendipuhdistetaan sarja %d / %d" @@ -302,6 +305,15 @@ msgid "'x1' and 'y1' lengths differ" msgstr "?x1?:n ja ?y1?:n pituudet eroavat" +msgid "'x' must be a matrix-like object" +msgstr "?x?:n t?ytyy olla matriisin kaltainen" + +msgid "'x' must have at least 2 rows and 2 columns" +msgstr "?x?:ss? pit?? olla v?hint??n 2 rivi? ja saraketta" + +msgid "'x' must contain numeric data" +msgstr "?x?:n t?ytyy sis?lt?? numeerisia arvoja" + msgid "use only with \"rwl\" objects" msgstr "k?yt? vain \"rwl\"-objektien kanssa" @@ -382,8 +394,8 @@ msgid "There does not appear to be a header in the crn file" msgstr "Tiedostossa ei n?yt? olevan otsaketta" -msgid "'header' must be NULL or logical" -msgstr "?header?in t?ytyy olla NULL tai logical-tyyppi?" +msgid "'header' must be NULL, TRUE or FALSE" +msgstr "?header?in t?ytyy olla NULL, TRUE tai FALSE" msgid "file has under 4 lines" msgstr "tiedostossa on alle 4 rivi?" @@ -447,6 +459,9 @@ "Sarjojen alusta puuttuvien renkaiden m??r?t l?ydettiin. Katso attribuutti " "\"po\"." +msgid "'rwl' must have non-NA names" +msgstr "?rwl?:ss? pit?? olla ei-NA-nimet" + msgid "Site-Tree-Core mask must only contain integral values" msgstr "Paikka?Puu?N?yte?maskissa t?ytyy olla pelkki? kokonaislukuja" @@ -456,9 +471,6 @@ msgid "changed tree-core code \"%s\" to \"%s\"" msgstr "vaihdettiin puu?n?yte?koodi ?%s? koodiksi ?%s?" -msgid "'rwl' must have non-NA names" -msgstr "?rwl?:ss? pit?? olla ei-NA-nimet" - msgid "series names must be at least 1 character long" msgstr "sarjojen nimien t?ytyy olla v?hint??n 1 merkin mittaisia" @@ -872,8 +884,8 @@ msgid "Detrending Options:" msgstr "Trendinpuhdistusvaihtoehdot:" -msgid "'sname' must be a character string less than 8 characters long" -msgstr "?sname?n t?ytyy olla alle 8-merkkinen merkkijono" +msgid "'sname' must be a character string whose width is less than 8" +msgstr "?sname?n t?ytyy olla merkkijono jonka leveys on alle 8" msgid "input series has length of %d" msgstr "sy?tesarjan pituus on %d" @@ -890,6 +902,9 @@ msgid "empty 'rwl' given, nothing to draw" msgstr "tyhj? ?rwl? annettu, ei mit??n piirrett?v??" +msgid "reverting to useRaster=FALSE" +msgstr "palataan asetukseen useRaster=FALSE" + msgid "'rwl' must have unique, non-NA names" msgstr "?rwl?:ss? pit?? olla uniikit, ei-NA-nimet" @@ -899,6 +914,15 @@ msgid "'length(rwl)' != 'nrow(ids)'" msgstr "?length(rwl)? ? ?nrow(ids)?" +msgid "'ids' must be a data.frame with column 'tree'" +msgstr "?ids?:n t?ytyy olla data.frame jossa on sarake ?tree?" + +msgid "'ncol(rwl)' != 'nrow(ids)'" +msgstr "?ncol(rwl)? ? ?nrow(ids)?" + +msgid "missing tree IDs are not allowed" +msgstr "puuttuvia puutunnisteita ei sallita" + msgid "a user-coded (pseudo) random number generator is in use" msgstr "k?ytt?j?n tekem? (pseudo)satunnaislukugeneraattori on k?yt?ss?" @@ -917,9 +941,6 @@ msgid "'wave.list$period' must be positive" msgstr "?wave.list$period?in t?ytyy olla positiivinen" -msgid "reverting to useRaster=FALSE" -msgstr "palataan asetukseen useRaster=FALSE" - msgid "'rwl.df' must be a data.frame" msgstr "?rwl.df?:n t?ytyy olla data.frame"