From f3f729c540e57c67c77d0dc060fff30dfe92ebb2 Mon Sep 17 00:00:00 2001 From: JTPetter Date: Fri, 15 May 2026 15:59:14 +0200 Subject: [PATCH 1/7] Fix minor issues --- R/doeAnalysis.R | 14 +- R/msaGaugeRR.R | 19 ++- R/msaGaugeRRnonrep.R | 9 +- R/msaTestRetest.R | 5 +- inst/help/attributesCharts.md | 2 - inst/help/doeAnalysis.md | 22 +-- inst/help/doeResponseSurfaceMethodology.md | 2 +- inst/help/msaAttribute.md | 1 - inst/help/msaGaugeLinearity.md | 1 - inst/help/msaGaugeRR.md | 9 +- inst/help/msaGaugeRRnonrep.md | 3 +- inst/help/msaTestRetest.md | 1 - inst/help/msaType1Gauge.md | 1 - inst/help/processCapabilityStudies.md | 6 +- inst/help/timeWeightedCharts.md | 2 +- inst/help/variablesChartsIndividuals.md | 2 - inst/help/variablesChartsSubgroups.md | 1 - inst/qml/doeFactorial.qml | 2 + inst/qml/msaGaugeRR.qml | 4 +- inst/qml/msaGaugeRRnonrep.qml | 2 +- .../msaGaugeRR/1-components-of-variation.svg | 124 ++++++++-------- .../msaGaugeRR/2-components-of-variation.svg | 124 ++++++++-------- .../msaGaugeRR/4-components-of-variation.svg | 119 +++++++++------- .../5-gauge-r-r-report-subplot-2.svg | 124 ++++++++-------- .../msaGaugeRR/gauge-r-r-report-subplot-2.svg | 132 ++++++++++-------- .../4-components-of-variation.rds | Bin 1010 -> 1046 bytes .../wf4-components-of-variation.rds | Bin 997 -> 1046 bytes .../wf1-components-of-variation.svg | 132 ++++++++++-------- .../wf2-components-of-variation.svg | 124 ++++++++-------- .../wf4-components-of-variation.svg | 127 +++++++++-------- 30 files changed, 599 insertions(+), 515 deletions(-) diff --git a/R/doeAnalysis.R b/R/doeAnalysis.R index bc4cd1f7a..0c47f1fc4 100644 --- a/R/doeAnalysis.R +++ b/R/doeAnalysis.R @@ -41,10 +41,11 @@ # avoid e-notation for small-to-moderate numbers mag <- floor(log10(absVal)) sigDigits <- max(digits, mag + 1 + digits) - trimws(formatC(val, digits = sigDigits, format = "g", drop0trailing = TRUE)) + formatted <- trimws(formatC(val, digits = sigDigits, format = "g", drop0trailing = TRUE)) } else { - trimws(formatC(val, digits = digits, format = "g", drop0trailing = TRUE)) + formatted <- trimws(formatC(val, digits = digits, format = "g", drop0trailing = TRUE)) } + sub("^-", "\u2013", formatted) }, character(1)) } @@ -1527,7 +1528,7 @@ get_levels <- function(var, num_levels, dataset) { return() } - tb <- createJaspTable(gettext("ANOVA")) + tb <- createJaspTable(gettext("Analysis of Variance")) tb$addColumnInfo(name = "terms", title = gettext("Source"), type = "string") tb$addColumnInfo(name = "adjss", title = gettext("Sum of squares"), type = "number") tb$addColumnInfo(name = "df", title = gettext("df"), type = "integer") @@ -1967,6 +1968,13 @@ get_levels <- function(var, num_levels, dataset) { plotTitle <- gettextf("%1$s of %2$s vs %3$s", plotTypeString, dep, variablePairString) plot <- createJaspPlot(title = plotTitle, width = 560, height = 460) result <- jaspResults[[dep]][["doeResult"]]$object[["regression"]] + termLabels <- attr(stats::terms(result[["object"]]), "term.labels") + missingVars <- variablePair[!sapply(variablePair, function(var) any(grepl(var, termLabels, fixed = TRUE)))] + if (length(missingVars) > 0) { + plot$setError(gettext("Could not plot (some of the) selected variables as they were not included in the final model. They might have been removed during model selection.")) + jaspResults[[dep]][["contourSurfacePlot"]][[plotTitle]] <- plot + next + } if (plotType == "contourPlot") { plot$plotObject <- .doeContourPlotObject(result, options, dep, variablePair) } else if (plotType == "surfacePlot") { diff --git a/R/msaGaugeRR.R b/R/msaGaugeRR.R index 8368eb53f..fedd8108e 100644 --- a/R/msaGaugeRR.R +++ b/R/msaGaugeRR.R @@ -250,7 +250,7 @@ msaGaugeRR <- function(jaspResults, dataset, options, ...) { # Gauge r&R ANOVA Table if (options[["anova"]]) { if (is.null(jaspResults[["gaugeANOVA"]])) { - jaspResults[["gaugeANOVA"]] <- createJaspContainer(gettext("Gauge r&R ANOVA table")) + jaspResults[["gaugeANOVA"]] <- createJaspContainer(gettext("Gauge r&R Analysis of Variance table")) jaspResults[["gaugeANOVA"]]$dependOn(c("processVariationReference", "historicalSdValue", "report")) jaspResults[["gaugeANOVA"]]$position <- 1 } @@ -334,7 +334,11 @@ msaGaugeRR <- function(jaspResults, dataset, options, ...) { if(options[["trafficLightChart"]] & is.null(jaspResults[["trafficPlot"]] )) { jaspResults[["trafficPlot"]] <- createJaspContainer(gettext("Traffic light chart")) jaspResults[["trafficPlot"]]$position <- 9 - jaspResults[["trafficPlot"]]$dependOn(c("trafficLightChart", "toleranceValue", "tolerance", "gaugeRRmethod", "processVariationReference", "historicalSdValue", "report")) + jaspResults[["trafficPlot"]]$dependOn(c("trafficLightChart", "toleranceValue", "tolerance", "gaugeRRmethod", + "processVariationReference", "historicalSdValue", "studyVarianceMultiplierType", + "studyVarianceMultiplierValue", "measurementLongFormat", "operatorLongFormat", + "partLongFormat", "measurementsWideFormat", "operatorWideFormat", + "partWideFormat", "dataFormat", "type3", "report")) trafficContainer <- jaspResults[["trafficPlot"]] valuesVec <- .gaugeANOVA(dataset = dataset, measurements = measurements, parts = parts, operators = operators, options = options, ready = ready, returnTrafficValues = TRUE, Type3 = Type3) @@ -348,11 +352,11 @@ msaGaugeRR <- function(jaspResults, dataset, options, ...) { .gaugeANOVA <- function(dataset, measurements, parts, operators, options, ready, returnPlotOnly = FALSE, returnTrafficValues = FALSE, gaugeEvaluationDfOnly = FALSE, Type3 = FALSE) { - anovaTables <- createJaspContainer(gettext("Gauge r&R study - crossed ANOVA")) + anovaTables <- createJaspContainer(gettext("Gauge r&R study - crossed Analysis of Variance")) anovaTables$dependOn(c("anova", "gaugeRRmethod", "report")) anovaTables$position <- 1 - anovaTable1 <- createJaspTable(title = ifelse(Type3, gettext("One-way ANOVA table"), gettext("Two-way ANOVA table with interaction"))) + anovaTable1 <- createJaspTable(title = ifelse(Type3, gettext("One-way Analysis of Variance table"), gettext("Two-way Analysis of Variance table with interaction"))) anovaTable1$addColumnInfo(title = gettext("Source"), name = "source", type = "string" ) anovaTable1$addColumnInfo(title = gettext("df"), name = "Df", type = "integer") anovaTable1$addColumnInfo(title = gettext("Sum of squares"), name = "Sum Sq", type = "number") @@ -569,7 +573,7 @@ msaGaugeRR <- function(jaspResults, dataset, options, ...) { } else { - anovaTable2 <- createJaspTable(title = gettext("Two-way ANOVA table without interaction")) + anovaTable2 <- createJaspTable(title = gettext("Two-way Analysis of Variance table without interaction")) anovaTable2$addColumnInfo(title = gettext("Source"), name = "source", type = "string" ) anovaTable2$addColumnInfo(title = gettext("df"), name = "Df", type = "integer") anovaTable2$addColumnInfo(title = gettext("Sum of squares"), name = "Sum Sq", type = "number") @@ -904,7 +908,7 @@ msaGaugeRR <- function(jaspResults, dataset, options, ...) { } .gaugeVarCompGraph <- function(percentContributionValues, studyVariationValues, percentToleranceValues, Type3 = FALSE) { - sources <- gettext(c('Gauge r&R', 'Repeat', 'Reprod', 'Part-to-part')) + sources <- gettext(c("Gauge r&R", "Repeatability", "Reproducibility", "Part-to-part")) if (!all(is.na(percentToleranceValues))) { references <- gettextf(c('%% Contribution', '%% Study variation', '%% Tolerance')) values <- c(percentContributionValues, studyVariationValues, percentToleranceValues) @@ -927,7 +931,8 @@ msaGaugeRR <- function(jaspResults, dataset, options, ...) { position="dodge", stat = "identity") + jaspGraphs::themeJaspRaw() + jaspGraphs::geom_rangeframe() + - ggplot2::theme(legend.position = 'right', legend.title = ggplot2::element_blank()) + + ggplot2::theme(legend.position = "right", legend.title = ggplot2::element_blank(), + plot.margin = ggplot2::margin(5.5, 30, 5.5, 5.5, "pt")) + ggplot2::xlab(NULL) + ggplot2::scale_y_continuous(name = "Percent", breaks = yBreaks, limits = range(c(yBreaks, plotframe$value))) return(p) diff --git a/R/msaGaugeRRnonrep.R b/R/msaGaugeRRnonrep.R index a29508e3a..2c7b62f65 100644 --- a/R/msaGaugeRRnonrep.R +++ b/R/msaGaugeRRnonrep.R @@ -267,14 +267,19 @@ msaGaugeRRnonrep <- function(jaspResults, dataset, options, ...) { jaspResults[["trafficLightChart"]] <- .trafficplot(StudyVar = percentMSVar, ToleranceUsed = options[["tolerance"]], ToleranceVar = percentMSTolerance, options = options, ready = ready) - jaspResults[["trafficLightChart"]]$dependOn(c("trafficLightChart", "report")) + jaspResults[["trafficLightChart"]]$dependOn(c("trafficLightChart", "report", "processVariationReference", + "historicalSdValue", "tolerance", "toleranceValue", + "studyVarianceMultiplierType", "studyVarianceMultiplierValue", + "measurementLongFormat", "operatorLongFormat", "partLongFormat", + "measurementsWideFormat", "operatorWideFormat", "partWideFormat", + "dataFormat")) } } } .gaugeRRNonRep <- function(dataset, measurements, parts, operators, options, ready, plotOnly = FALSE, trafficPlotValuesOnly = FALSE, gaugeEvaluationDfOnly = FALSE) { - gaugeRRNonRepTables <- createJaspContainer(gettext("Gauge r&R study - nested ANOVA")) + gaugeRRNonRepTables <- createJaspContainer(gettext("Gauge r&R study - nested Analysis of Variance")) gaugeRRNonRepTables$position <- 1 gaugeRRNonRepTable1 <- createJaspTable(title = gettext("Gauge r&R (nested)")) diff --git a/R/msaTestRetest.R b/R/msaTestRetest.R index 06c8877ce..0b16b4df0 100644 --- a/R/msaTestRetest.R +++ b/R/msaTestRetest.R @@ -107,7 +107,10 @@ msaTestRetest <- function(jaspResults, dataset, options, ...) { if(options[["trafficLightChart"]] && is.null(jaspResults[["trafficPlot"]] )) { jaspResults[["trafficPlot"]] <- createJaspContainer(gettext("Traffic light chart")) jaspResults[["trafficPlot"]]$position <- 4 - jaspResults[["trafficPlot"]]$dependOn(c("trafficLightChart", "manualProcessSdValue", "manualProcessSd", "toleranceValue", "tolerance")) + jaspResults[["trafficPlot"]]$dependOn(c("trafficLightChart", "manualProcessSdValue", "manualProcessSd", + "toleranceValue", "tolerance", "measurementLongFormat", "measurementsWideFormat", + "partLongFormat", "partWideFormat", "operator", "dataFormat", + "measurementLongFormat", "measurementsWideFormat", "partLongFormat", "partWideFormat", "operator", "dataFormat")) TrafficContainer <- jaspResults[["trafficPlot"]] valuesVec <- .rAndRtableRange(dataset = dataset, measurements = measurements, parts = parts, operators = operators, options = options, jaspResults, ready = ready, GRRpercent = TRUE) diff --git a/inst/help/attributesCharts.md b/inst/help/attributesCharts.md index c7e711b78..7012ff81a 100644 --- a/inst/help/attributesCharts.md +++ b/inst/help/attributesCharts.md @@ -60,8 +60,6 @@ In the case that the data of the individual and moving Range chart (X-mR chart) - Duncan, A.J. (1986), *Quality control and industrial statistics*, Richard D. Irwin, Inc. - Automotive Industry Action Group, *Statistical Process Control – Reference Manual* (July 2005, 2nd Edition) -- SKF Quality Techniques, Klerx, R., Dodson, B., and Dumont, D., QT 1 – *Process capability studies* (PUB GQ/P9 10347/1 EN – December 2021) -- SKF Quality Techniques, Dodson, B., Lynch, D., Weidenbacher, M., and Klerx, R., QT 2 – *Statistical process control* (PUB GQS/P9 18343 EN – April 2019) - International Organization for Standardization, *Control charts – Part 2: Shewhart control charts*, ISO 7870-2:2023 (E) diff --git a/inst/help/doeAnalysis.md b/inst/help/doeAnalysis.md index fbb0edb6d..134a443c5 100644 --- a/inst/help/doeAnalysis.md +++ b/inst/help/doeAnalysis.md @@ -18,27 +18,27 @@ A response surface design is an experimental framework used to optimize and unde ### Assignment box - Response: The measured outcome variable of the process under investigation. -- Discrete predictors: The columns corresponding to the discrete predictors in the design. -- Continuous predictors: The columns corresponding to the continuous predictors in the design. -- Covariates: The columns corresponding to the covariates in the design. The difference between a covariate and a continuous predictor is that the covariate will not be analysed for interaction effects and excluded from effect plots. -- Blocks: The columns corresponding to the blocks in the design. The difference between a block variable and a discrete predictor is that the blocks will not be analysed for interaction effects and excluded from effect plots. +- Discrete factors: The columns corresponding to the discrete factors in the design. +- Continuous factors: The columns corresponding to the continuous factors in the design. +- Covariates: The columns corresponding to the covariates in the design. The difference between a covariate and a continuous factor is that the covariate will not be analysed for interaction effects and excluded from effect plots. +- Blocks: The columns corresponding to the blocks in the design. The difference between a block variable and a discrete factor is that the blocks will not be analysed for interaction effects and excluded from effect plots. ## Analysis options ------- -### Predictor levels -For the ordering of contrasts and to identify the alpha points in a response surface design, the low and high levels of all predictors need to be specified. There are two options to handle this. +### Factor levels +For the ordering of contrasts and to identify the alpha points in a response surface design, the low and high levels of all factors need to be specified. There are two options to handle this. -- Automatically detect low/high: Attempts to automatically detect the low and high levels by taking the minimum and maximum for continuous predictors, and by ordering discrete predictors alphabetically. For response surface designs, this might recognize alpha values as low/high levels. In this case, manual specification is needed. +- Automatically detect low/high: Attempts to automatically detect the low and high levels by taking the minimum and maximum for continuous factors, and by ordering discrete factors alphabetically. For response surface designs, this might recognize alpha values as low/high levels. In this case, manual specification is needed. -- Manually specify low/high: Shows all predictors in the analysis to allow for manual specification of the low and high levels. +- Manually specify low/high: Shows all factors in the analysis to allow for manual specification of the low and high levels. ### Other analysis options -- Use alias names: Check to assign alias names to predictors. Useful when predictors have long names. +- Use alias names: Check to assign alias names to factors. Useful when factors have long names. - Show regression equation: Check to display the regression coefficients as an equation predicting the response. -- Display result in coded units: Check to display the results in coded units. This means, all predictor levels are standardized between -1 and 1. -- Show optimal response: Check to display the predictor levels yielding the optimal response. +- Display result in coded units: Check to display the results in coded units. This means, all factor levels are standardized between -1 and 1. +- Show optimal response: Check to display the factor levels yielding the optimal response. ## Model options ------- diff --git a/inst/help/doeResponseSurfaceMethodology.md b/inst/help/doeResponseSurfaceMethodology.md index 08169dd83..b57403c99 100644 --- a/inst/help/doeResponseSurfaceMethodology.md +++ b/inst/help/doeResponseSurfaceMethodology.md @@ -100,4 +100,4 @@ The Box-Behnken set-up consists of twelve "edge" points (shown as red dots) all ------- - Dodson, L., Dodson, M., and Klerx, R. (2010), *A study of the hierarchical ordering principle and the effect heredity principle in factorial experimental designs*, 10th Annual Transaction of ENBIS (12 16 September 2010, Antwerp). - Box, G.E.P., and Wilson, K.B. (1951), On the experimental attainment of optimum conditions. *Journal of the Royal Statistical Society 13*(1), 1-45. -- Dodson, B., Weidenbacher, M., Lynch D., and Klerx, R., QT 9 - Design and analysis of experiments. *SKF Quality Techniques*. (PUB GQS/P9 16083 EN - August 2015). +- Automotive Industry Action Group (July 2005), *Statistical process control (SPC) – Reference manual*, AIAG. diff --git a/inst/help/msaAttribute.md b/inst/help/msaAttribute.md index b0d167bd2..4d231f0c4 100644 --- a/inst/help/msaAttribute.md +++ b/inst/help/msaAttribute.md @@ -38,7 +38,6 @@ Data can be in the form of all observations in one column ("Single column") or a ## References ------- - Duncan, A.J. (1986), Quality control and industrial statistics, Richard D. Irwin, Inc., and Automotive Industry Action Group (July 2005), Statistical process control (SPC) – Reference manual, AIAG. -- Dodson, B., Lynch, D., Weidenbacher, M., & Klerx, R. (2009).*Statistical process control handbook*. SKF group. ## R Packages ------- - jaspGraphs diff --git a/inst/help/msaGaugeLinearity.md b/inst/help/msaGaugeLinearity.md index 18007e913..5202c0eeb 100644 --- a/inst/help/msaGaugeLinearity.md +++ b/inst/help/msaGaugeLinearity.md @@ -31,7 +31,6 @@ bias (matching between measurements and reference values) of a system. ## References ------- - Duncan, A.J. (1986), Quality control and industrial statistics, Richard D. Irwin, Inc., and Automotive Industry Action Group (July 2005), Statistical process control (SPC) – Reference manual, AIAG. -- Dodson, B., Lynch, D., Weidenbacher, M., & Klerx, R. (2009).*Statistical process control handbook*. SKF group. ## R Packages ------- diff --git a/inst/help/msaGaugeRR.md b/inst/help/msaGaugeRR.md index 4e67c16f9..18629bca4 100644 --- a/inst/help/msaGaugeRR.md +++ b/inst/help/msaGaugeRR.md @@ -17,13 +17,13 @@ Data can be in the form of all observations in one column ("Single column") or a ### Gauge r&R Method The method used in the analysis. -- ANOVA method: analysis is based on analysis of variance (ANOVA). +- Analysis of Variance method: analysis is based on analysis of variance (ANOVA). -### Options (ANOVA method) +### Options (Analysis of Variance method) #### Analysis options - Std.Deviation reference: either a historically known standard deviation (Historical process std.Deviation) or estimated from the data (Study std.Deviation). - Tolerance: include a value for tolerance. -- r&R table ANOVA method: options for the ANOVA table. +- r&R table Analysis of Variance method: options for the Analysis of Variance table. - Alpha interaction removal: value for alpha level. - Study Var. multiplier type: multiplier based on either Std.Deviation or Percent. - Study Var. multiplier value: value for the multiplier. @@ -44,14 +44,13 @@ The method used in the analysis. ## Output ------- -- ANOVA Table: Two-way anova tables with and without interactions for the input variables, repeatability, reproducibility, and total Gauge r&R. +- Analysis of Variance table: Two-way analysis of variance tables with and without interactions for the input variables, repeatability, reproducibility, and total Gauge r&R. - Gauge r&R Variance Components: variance and contribution in percentage of the input variables, repeatability, reproducibility, and total Gauge r&R. - Gauge Evaluation: the standard deviations, study variations, and percent of study variation and tolerance for input variables, repeatability, reproducibility, and total Gauge r&R. ## References ------- - Duncan, A.J. (1986), Quality control and industrial statistics, Richard D. Irwin, Inc., and Automotive Industry Action Group (July 2005), Statistical process control (SPC) – Reference manual, AIAG. -- Dodson, B., Lynch, D., Weidenbacher, M., & Klerx, R. (2009).*Statistical process control handbook*. SKF group. ## R Packages ------- diff --git a/inst/help/msaGaugeRRnonrep.md b/inst/help/msaGaugeRRnonrep.md index 8e9bf3300..a4e432163 100644 --- a/inst/help/msaGaugeRRnonrep.md +++ b/inst/help/msaGaugeRRnonrep.md @@ -37,7 +37,7 @@ Data can be in the form of all observations in one column ("Single column") or a ## Output ------- -- Gauge r&R (Nested): Nested ANOVA table for the input variables, repeatability, and total Gauge r&R. +- Gauge r&R (Nested): Nested Analysis of Variance table for the input variables, repeatability, reproducibility, and total Gauge r&R. - Gauge r&R Variance Components: variance and contribution in percentage of the input variables, repeatability, reproducibility, and total Gauge r&R. - Gauge Evaluation: the standard deviations, study variations, and percent of study variation and tolerance for input variables, repeatability, reproducibility, and total Gauge r&R. @@ -55,7 +55,6 @@ If you are looking at the %Contribution column, the corresponding standards are: ## References ------- - Duncan, A.J. (1986), Quality control and industrial statistics, Richard D. Irwin, Inc., and Automotive Industry Action Group (July 2005), Statistical process control (SPC) – Reference manual, AIAG. -- Dodson, B., Lynch, D., Weidenbacher, M., & Klerx, R. (2009).*Statistical process control handbook*. SKF group. ## R Packages ------- diff --git a/inst/help/msaTestRetest.md b/inst/help/msaTestRetest.md index a64ebb4bc..6632fb27c 100644 --- a/inst/help/msaTestRetest.md +++ b/inst/help/msaTestRetest.md @@ -38,7 +38,6 @@ Data can be in the form of all observations in one column ("Single column") or a ## References ------- - Duncan, A.J. (1986), Quality control and industrial statistics, Richard D. Irwin, Inc., and Automotive Industry Action Group (July 2005), Statistical process control (SPC) – Reference manual, AIAG. -- Dodson, B., Lynch, D., Weidenbacher, M., & Klerx, R. (2009).*Statistical process control handbook*. SKF group. ## R Packages ------- diff --git a/inst/help/msaType1Gauge.md b/inst/help/msaType1Gauge.md index 9f255d4e1..d0f01e79b 100644 --- a/inst/help/msaType1Gauge.md +++ b/inst/help/msaType1Gauge.md @@ -39,7 +39,6 @@ Type 1 Gauge is performed before a Gauge r & R study to determine the measuremen ## References ------- - Duncan, A.J. (1986), Quality control and industrial statistics, Richard D. Irwin, Inc., and Automotive Industry Action Group (July 2005), Statistical process control (SPC) – Reference manual, AIAG. -- Dodson, B., Lynch, D., Weidenbacher, M., & Klerx, R. (2009).*Statistical process control handbook*. SKF group. ## R Packages ------- diff --git a/inst/help/processCapabilityStudies.md b/inst/help/processCapabilityStudies.md index 4b90c76a9..4172d7a25 100644 --- a/inst/help/processCapabilityStudies.md +++ b/inst/help/processCapabilityStudies.md @@ -126,10 +126,8 @@ The size of the subgroups is relevant for the calculation of the process varianc ## References ------- 1. Automotive Industry Action Group, *Statistical Process Control - Reference Manual* (July 2005, 2nd Edition) -2. SKF Quality Techniques, Klerx, R., Dodson, B., and Dumont, D., QT 1 - *Process capability studies*. (PUB GQ/P9 10347/1 EN - December 2021) -3. SKF Quality Techniques, Dodson, B., Lynch, D., Weidenbacher, M., and Klerx, R. (), *QT 2 - Statistical process control*, (PUB GQS/P9 18343 EN - April 2019) -4. Yeo, I. K., & Johnson, R. A. (2000). A new family of power transformations to improve normality or symmetry. Biometrika, 87(4), 954-959. -5. Chou, Y. M., Polansky, A. M., & Mason, R. L. (1998). Transforming non-normal data to normality in statistical process control. Journal of Quality Technology, 30(2), 133-141. +2. Yeo, I. K., & Johnson, R. A. (2000). A new family of power transformations to improve normality or symmetry. Biometrika, 87(4), 954-959. +3. Chou, Y. M., Polansky, A. M., & Mason, R. L. (1998). Transforming non-normal data to normality in statistical process control. Journal of Quality Technology, 30(2), 133-141. ## R Packages diff --git a/inst/help/timeWeightedCharts.md b/inst/help/timeWeightedCharts.md index d88371934..35a03cddf 100644 --- a/inst/help/timeWeightedCharts.md +++ b/inst/help/timeWeightedCharts.md @@ -71,7 +71,7 @@ Graphical display for the tabular CUSUM. These charts are sometimes called CUSUM -------- - Page, E.S. (1954), *Continuous inspection schemes*, Biometrika, Vol. 41, No. 1-2, pp. 100-115 - Roberts, S.W. (1959), *Control chart tests based on geometric moving averages*, Technometrics, Vol. 1, No. 3, pp. 239-250 -- SKF Quality Techniques, Dodson, B., Lynch, D., Weidenbacher, M., and Klerx, R., *QT 2 – Statistical process control* (PUB GQS/P9 18343 EN – April 2019) +- Automotive Industry Action Group (July 2005), *Statistical process control (SPC) – Reference manual*, AIAG. - International Organization for Standardization, *Control charts – Part 4: Cumulative sum charts*, ISO 7870-4:2021 (E) - Montgomery D. C. (2013), *Introduction to statistical quality control (7th Ed.)*, John Wiley & Sons, Inc , Hoboken (NJ) diff --git a/inst/help/variablesChartsIndividuals.md b/inst/help/variablesChartsIndividuals.md index 8307abda3..ef6f9b75a 100644 --- a/inst/help/variablesChartsIndividuals.md +++ b/inst/help/variablesChartsIndividuals.md @@ -87,8 +87,6 @@ Only Test 1, Test 2, Test 3 and Test 8 will be applied to the moving range chart ------- - Duncan, A.J. (1986), *Quality control and industrial statistics*, Richard D. Irwin, Inc. - Automotive Industry Action Group, *Statistical Process Control – Reference Manual* (July 2005, 2nd Edition) -- SKF Quality Techniques, Klerx, R., Dodson, B., and Dumont, D., *QT 1 – Process capability studies*, (PUB GQ/P9 10347/1 EN – December 2021) -- SKF Quality Techniques, Dodson, B., Lynch, D., Weidenbacher, M., & and Klerx, R. (2009).), *QT 2 – Statistical process control*, (PUB GQS/P9 18343 EN – April 2019) ## R Packages diff --git a/inst/help/variablesChartsSubgroups.md b/inst/help/variablesChartsSubgroups.md index 42c38211c..bbc65a4bd 100644 --- a/inst/help/variablesChartsSubgroups.md +++ b/inst/help/variablesChartsSubgroups.md @@ -82,7 +82,6 @@ Select manually which tests you want to apply and modify them as desired: ## References ------- - Duncan, A.J. (1986), Quality control and industrial statistics, Richard D. Irwin, Inc., and Automotive Industry Action Group (July 2005), Statistical process control (SPC) - Reference manual, AIAG -- Dodson, B., Lynch, D., Weidenbacher, M., & Klerx, R. (2009).*Statistical process control handbook*. SKF group. ## R Packages diff --git a/inst/qml/doeFactorial.qml b/inst/qml/doeFactorial.qml index d8fb76158..1250440ad 100644 --- a/inst/qml/doeFactorial.qml +++ b/inst/qml/doeFactorial.qml @@ -478,6 +478,7 @@ Form max: 8 } + /* IntegerField { name: "repetitions" @@ -486,6 +487,7 @@ Form min: 0 max: 10 } + */ } } } diff --git a/inst/qml/msaGaugeRR.qml b/inst/qml/msaGaugeRR.qml index 7ff585962..83c1bf7b9 100644 --- a/inst/qml/msaGaugeRR.qml +++ b/inst/qml/msaGaugeRR.qml @@ -178,7 +178,7 @@ Form CheckBox { name: "anova" - label: qsTr("r&R ANOVA table") + label: qsTr("r&R Analysis of Variance table") checked: true DropDown @@ -251,7 +251,7 @@ Form CheckBox { name: "xBarChart" - label: qsTr("Average chart bys operator") + label: qsTr("Average chart by operator") enabled: !type3.checked } diff --git a/inst/qml/msaGaugeRRnonrep.qml b/inst/qml/msaGaugeRRnonrep.qml index 45c784147..3b4b4f266 100644 --- a/inst/qml/msaGaugeRRnonrep.qml +++ b/inst/qml/msaGaugeRRnonrep.qml @@ -149,7 +149,7 @@ Form CheckBox { name: "anova" - label: qsTr("r&R ANOVA table") + label: qsTr("r&R Analysis of Variance table") checked: true DropDown diff --git a/tests/testthat/_snaps/msaGaugeRR/1-components-of-variation.svg b/tests/testthat/_snaps/msaGaugeRR/1-components-of-variation.svg index 29270d5a2..b05910792 100644 --- a/tests/testthat/_snaps/msaGaugeRR/1-components-of-variation.svg +++ b/tests/testthat/_snaps/msaGaugeRR/1-components-of-variation.svg @@ -1,5 +1,6 @@ - + + - - + + - - + + - - + + - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + +0 +50 +100 +150 +200 + + + + + + + + + + +Gauge r&R +Repeatability +Reproducibility +Part-to-part +Percent + + + + + + + + +% Contribution +% Study variation +% Tolerance - - -0 -50 -100 -150 -200 - - - - - - - - - - -Gauge r&R -Repeat -Reprod -Part-to-part -Percent - - - - - - - - -% Contribution -% Study variation -% Tolerance -1_components-of-variation diff --git a/tests/testthat/_snaps/msaGaugeRR/2-components-of-variation.svg b/tests/testthat/_snaps/msaGaugeRR/2-components-of-variation.svg index f3db7f311..d599319a4 100644 --- a/tests/testthat/_snaps/msaGaugeRR/2-components-of-variation.svg +++ b/tests/testthat/_snaps/msaGaugeRR/2-components-of-variation.svg @@ -1,5 +1,6 @@ - + + - - + + - - + + - - + + - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + +0 +50 +100 +150 +200 + + + + + + + + + + +Gauge r&R +Repeatability +Reproducibility +Part-to-part +Percent + + + + + + + + +% Contribution +% Study variation +% Tolerance - - -0 -50 -100 -150 -200 - - - - - - - - - - -Gauge r&R -Repeat -Reprod -Part-to-part -Percent - - - - - - - - -% Contribution -% Study variation -% Tolerance -2_components-of-variation diff --git a/tests/testthat/_snaps/msaGaugeRR/4-components-of-variation.svg b/tests/testthat/_snaps/msaGaugeRR/4-components-of-variation.svg index bdafea196..13e57e66b 100644 --- a/tests/testthat/_snaps/msaGaugeRR/4-components-of-variation.svg +++ b/tests/testthat/_snaps/msaGaugeRR/4-components-of-variation.svg @@ -1,5 +1,6 @@ - + + - - + + - - + + - - + + - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + +0 +50 +100 +150 +200 + + + + + + + + + + +Gauge r&R +Repeatability +Reproducibility +Part-to-part +Percent + + + + + + + + +% Contribution +% Study variation +% Tolerance - - -0 -50 -100 -150 -200 - - - - - - - - - -Gauge r&R -Repeat -Part-to-part -Percent - - - - - - - - -% Contribution -% Study variation -% Tolerance -4_components-of-variation diff --git a/tests/testthat/_snaps/msaGaugeRR/5-gauge-r-r-report-subplot-2.svg b/tests/testthat/_snaps/msaGaugeRR/5-gauge-r-r-report-subplot-2.svg index f0714d74a..7afddb38c 100644 --- a/tests/testthat/_snaps/msaGaugeRR/5-gauge-r-r-report-subplot-2.svg +++ b/tests/testthat/_snaps/msaGaugeRR/5-gauge-r-r-report-subplot-2.svg @@ -1,5 +1,6 @@ - + + - - + + - - + + - - + + - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + +0 +50 +100 +150 +200 + + + + + + + + + + +Gauge r&R +Repeatability +Reproducibility +Part-to-part +Percent + + + + + + + + +% Contribution +% Study variation +% Tolerance - - -0 -50 -100 -150 -200 - - - - - - - - - - -Gauge r&R -Repeat -Reprod -Part-to-part -Percent - - - - - - - - -% Contribution -% Study variation -% Tolerance -5_gauge-r-r-report-subplot-2 diff --git a/tests/testthat/_snaps/msaGaugeRR/gauge-r-r-report-subplot-2.svg b/tests/testthat/_snaps/msaGaugeRR/gauge-r-r-report-subplot-2.svg index 19e40b83c..f1013eb88 100644 --- a/tests/testthat/_snaps/msaGaugeRR/gauge-r-r-report-subplot-2.svg +++ b/tests/testthat/_snaps/msaGaugeRR/gauge-r-r-report-subplot-2.svg @@ -1,5 +1,6 @@ - + + - - + + - - + + - - + + - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + +0 +20 +40 +60 +80 +100 +120 + + + + + + + + + + + + +Gauge r&R +Repeatability +Reproducibility +Part-to-part +Percent + + + + + + + + +% Contribution +% Study variation +% Tolerance - - -0 -20 -40 -60 -80 -100 -120 - - - - - - - - - - - - -Gauge r&R -Repeat -Reprod -Part-to-part -Percent - - - - - - - - -% Contribution -% Study variation -% Tolerance -gauge-r-r-report-subplot-2 diff --git a/tests/testthat/_snaps/msaGaugeRR/reference_plotobject/4-components-of-variation.rds b/tests/testthat/_snaps/msaGaugeRR/reference_plotobject/4-components-of-variation.rds index d6e43f4b24ed95fb19cd14248905fdd73be983d8..7abb6a45d62546a0ca517bcbed03401eb6d2ca1d 100644 GIT binary patch literal 1046 zcmV+x1nK)9iwFP!000002HjW9ZyQAvpWU@x+i_AiMJf^;sulqkqC}O_^ps8A8X-k( z)f5ppRFmIBLMnRP zuaJh4xpc@v*=gqnwJV7xQM07BaTpYonbvjrvzKpzdCF!BoH}s4yL57K@yxTa^Yf=y zPAokeySQ+w)9vn!g_z0S+l-pGd_Q5#Hqcjrz6KPO&6j{41^PPBI?$Ja9s~O3csu(= zQ#*HHe4prU<1xt&wElETiaDt*JdX~>_S+At{kUILp7X@cul=|!|9c{CX7y9mJ~O8i z`WTjoQ5&%SGg;5nlXc7{&_l_3W?Py@Ge;T2Ry5QM=bz) z!U!hu5K`-}SAP1ceft}vnCs^H*Ehf0x;$&XapR-Uqu)P7n#q6u@<8Cw zeT+1fZ+?68lVii#=WU1VdsB#Oh$6Ph*^bgm!BDI_@w>IqRJNm5tzYmB=C#7rKVo=+uacy^}LWE{$z zEW6Jw$J3i^c5nQfIfAZ({pI#jReX5erZnt`^cI_9oF$=Lb@Yw6k?8o+7#Mw zyzR79)P~%)o%HG&$s&ZJv=r#kd|C*Yi>@{!?g|!I%onLND;Z7I@AbJ$olKfmnWpN4 zv=~F3rw8f@XvI&%EThFH6WmIRrjThlE|+oRYYyFDPP%}^mIXbvPsNeYXI3^N#viy) QVH{id9|N8TpkfaI0468^O8@`> literal 1010 zcmV8NUd%Xt1hRc{?6OIH&+QU4=DzyA%9N^shR1# zMp|mmry~~2NvE)AT+bwlIwhs8Lm;5cv~I{h(|#`~t8}-(_`cVBtEX00&d$g#FP~XI zxjG}ea^iHi*PFtE>twcZK*_E>${4!?^e9jevR?&y3}_SRVW7t+>zkKqeLukZoOGIh zHrazVCsR@my>a5DP0-O_9;ornyj0dertjxLI@bO^nGU=DsT!X>2LN1f?f2}wZD!}} zc1EjJ=y){7Dl}p7;E0AHbNeojornpBdFqcxEaDDHOBCFCn7Om|By-1Zfcw9JSp(c{ zf!v?KTOhxX(abIL*&Lqy2!Q+r7q0$b@%GEMf;5p zKmI)V^&?HUzWefV^3xagslnoVAKd>$)15oFZXO>k{#W|QOB)I)1Ci=rN>MM|p};hp zzzfC^aJ2#VJeV&GJf0#-Wfy>x!zdVsz%)JXGm(UdbW8EO+!Z@09Yiie&Gk#`7tU=U zQxuae1&m)G(ZZbjD3IV{QV>X#K)F_0QLwv&U2DI}jT;#ZtxC?|fwoHpT^dC42xO{i zXAP3Q^9GzQo~Uno)VV5EsX!U`9uK zu_>Wni~0L3GhjU{dpa9RCNzH&(JD&sdy565Gc>9!zp^Q)IPWrFaFJB@_FoEOE_mRd z4csAvO>06*>Qs>_ky)<-MG77o7{>{6g^!%2Xhiha&vS^^hVnWZIC%#|I0T>Z+Uoh? z{tz*fMbi(d#0+a^K^?}W+{r3@2NZmlsXt^r0DM*yJBVUo|LOk#rjk8;?VHM8f16_V zA58g3;Z{vltBPQk2*|T7|Wc?UIX>fJY((V0#o?XmFl3#>R#NK zRIb+Li&qf6&F=cfx&Bs}eRrN(F1dm=S9cUd$P5%Bn1CVmnb-Gd5{w1O{}nLy0QaS)7|N=$?oWd8#m7Cf$$e#;>CF4+)wW-xTwd%@#Oy;EnFmsl~-J&&Dn+oL)J( z^la?niFZ2P?%r64ne4sIsd>xyQ^sxseHG}NKtb7l3FvD;-vU|(dKBpEK;NEhXTPYn z^D~U^6Wwh*HravJpH4|JCyf)&ql2;i@q=nV?iZEkJhk&{KWWSVolKft{Zh5B?Aeq) zh9zRu2CV;1*R#!Z9lHtiP`Y0E268+a;|*lO;K3mcL+18e9y<{e43C#T8nTExB)Oiz z-QUw?mmh$eH84L1;r#{X4G50>1H1+EXMi3;Sd_cwqbWT61uXpwo>jo3763hE z1k-q!rk1^U^VrefZrnnOxo)pt+5YbPtFPGS?ixScd-onvE&rGtUpw~oVf%yIpKpBo z>HA2v{PGvKzj^TIo#$Vsi5=yNKPT?Nl;IS8cEBd0kiWnsv914uF0j; z1{!zo=Yh^1CO+6Vh4Bj zCOo)IL@Td-;2aBvr)g9gZmkO{-gB8RxEPmYvloMy3m*7q0(ZbbXiZ2-ohmXVQtM@) zNX|n8_i=(=?qN9}4T*knK8AQ@Aj8qX$rupf5PZh4)iuWb0b(W(O)sPpGdw#pYBCOG zPL|=DQ}C@(f55r`_-;{bBZ@is!xsRif<3Gnb!D%&K{5LeCVZrDD<`T|Mz|Bmi>X5+ z!D3GRlC;sK4io1`GUw9UK>bnK<=M>?cHj#kRbe5kb76JTakbVie1hn$cUD%<_AV9K z%hR0Yf-89Ds*ZvPnZ7~<6ELJc^Lic~2O~kUzhA}^zpp`rgvy2v-OmIgRO(D~AQZD1h*F3txJiUO#mPI|aPsNcqWKK3C!5_F- QVVqd_AH@AN@?sAF03iYW-~a#s literal 997 zcmVB0X%FA6FmA}EL-GrMnQKTJ&|_2NMK=FPl$ z@6GSMH*b5siV!kTp{OIH$fu}y=5&4c6hiu#V1R1;_XDAV9?c7=BKBO|CLy1UrWUp3 zSQ3d-T-q1|0b!@3Fr=>WuRMt?(D5^SgQ2Bg!Lh5KmSa$0xkEZC>wfh&#FzN zqwk-I@qAdyYarJ5x*3h>Z+oL*7H^Aj=QjZ0g43Vl^QIo3GpjMpSE1$LP*$N1iyPY5 z_le!GX=nw65t*lMr%eKCp{PW`t#`3I)8Auv%o4c&3CwEXZUyAN0B?Z&NK9k5^q)g` z@(KX?3KuT`V1Mc1FrLJrHz#jy-}3gxT}9_FEkAyGd8>KkiT2{nfj5etMZ4#=KiFs< zzjtln(ZyqmUbuDd;r9>s|CK(pYC|BUNu)+)N@2%e#K4p+&+$3|aD^sy9GH(Z9U38u zc^80_t-$N}z?2>864v!4(iOokQJXDFX)mye)Lc9@bK>xA~&wbFjR6mBM($<%IQne}uq zlyqqRxTu?X5fIg_KdxJ>=Of0-HvUlvJt0QzEvW z2MVP;)MOlc$fZ7V#)CFeUq8PgUTE>_DB$=VB*H%UEUzt|AL_OwX1r(`KIWLo+8Ggt z~}-jZq+r8c!~M?GB~-h||qY6W_CLNx;7N>{60>M{~o#Aj+ZX&F^9Z#1ckon%*a znW~t>ZuSmkstRfaw4zV6B%|3PVboGhlkv3dmCG{lB?m7MM=9XglAs~tlwApZVkIXc T{DBJv#*u|zWgY{9?hOC{Z@K5~ diff --git a/tests/testthat/_snaps/msaGaugeRR/wf1-components-of-variation.svg b/tests/testthat/_snaps/msaGaugeRR/wf1-components-of-variation.svg index 950b310be..0283b7fd0 100644 --- a/tests/testthat/_snaps/msaGaugeRR/wf1-components-of-variation.svg +++ b/tests/testthat/_snaps/msaGaugeRR/wf1-components-of-variation.svg @@ -1,5 +1,6 @@ - + + - - + + - - + + - - + + - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + +0 +20 +40 +60 +80 +100 +120 + + + + + + + + + + + + +Gauge r&R +Repeatability +Reproducibility +Part-to-part +Percent + + + + + + + + +% Contribution +% Study variation +% Tolerance - - -0 -20 -40 -60 -80 -100 -120 - - - - - - - - - - - - -Gauge r&R -Repeat -Reprod -Part-to-part -Percent - - - - - - - - -% Contribution -% Study variation -% Tolerance -WF1_components-of-variation diff --git a/tests/testthat/_snaps/msaGaugeRR/wf2-components-of-variation.svg b/tests/testthat/_snaps/msaGaugeRR/wf2-components-of-variation.svg index 9eaf7169a..41b124969 100644 --- a/tests/testthat/_snaps/msaGaugeRR/wf2-components-of-variation.svg +++ b/tests/testthat/_snaps/msaGaugeRR/wf2-components-of-variation.svg @@ -1,5 +1,6 @@ - + + - - + + - - + + - - + + - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + +0 +50 +100 +150 +200 + + + + + + + + + + +Gauge r&R +Repeatability +Reproducibility +Part-to-part +Percent + + + + + + + + +% Contribution +% Study variation +% Tolerance - - -0 -50 -100 -150 -200 - - - - - - - - - - -Gauge r&R -Repeat -Reprod -Part-to-part -Percent - - - - - - - - -% Contribution -% Study variation -% Tolerance -WF2_components-of-variation diff --git a/tests/testthat/_snaps/msaGaugeRR/wf4-components-of-variation.svg b/tests/testthat/_snaps/msaGaugeRR/wf4-components-of-variation.svg index b9f664bc0..c254930f8 100644 --- a/tests/testthat/_snaps/msaGaugeRR/wf4-components-of-variation.svg +++ b/tests/testthat/_snaps/msaGaugeRR/wf4-components-of-variation.svg @@ -1,5 +1,6 @@ - + + - - + + - - + + - - + + - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + +0 +20 +40 +60 +80 +100 +120 + + + + + + + + + + + + +Gauge r&R +Repeatability +Reproducibility +Part-to-part +Percent + + + + + + + + +% Contribution +% Study variation +% Tolerance - - -0 -20 -40 -60 -80 -100 -120 - - - - - - - - - - - -Gauge r&R -Repeat -Part-to-part -Percent - - - - - - - - -% Contribution -% Study variation -% Tolerance -WF4_components-of-variation From f0a79f81339ca63e23b31a5b6ff5eec495bc90a4 Mon Sep 17 00:00:00 2001 From: JTPetter <61797391+JTPetter@users.noreply.github.com> Date: Fri, 3 Jul 2026 17:06:05 +0200 Subject: [PATCH 2/7] Remove double dependencies Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> --- R/msaTestRetest.R | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/R/msaTestRetest.R b/R/msaTestRetest.R index 0b16b4df0..7371f6575 100644 --- a/R/msaTestRetest.R +++ b/R/msaTestRetest.R @@ -107,10 +107,13 @@ msaTestRetest <- function(jaspResults, dataset, options, ...) { if(options[["trafficLightChart"]] && is.null(jaspResults[["trafficPlot"]] )) { jaspResults[["trafficPlot"]] <- createJaspContainer(gettext("Traffic light chart")) jaspResults[["trafficPlot"]]$position <- 4 - jaspResults[["trafficPlot"]]$dependOn(c("trafficLightChart", "manualProcessSdValue", "manualProcessSd", - "toleranceValue", "tolerance", "measurementLongFormat", "measurementsWideFormat", - "partLongFormat", "partWideFormat", "operator", "dataFormat", - "measurementLongFormat", "measurementsWideFormat", "partLongFormat", "partWideFormat", "operator", "dataFormat")) + jaspResults[["trafficPlot"]]$dependOn(c( + "trafficLightChart", "manualProcessSdValue", "manualProcessSd", + "toleranceValue", "tolerance", + "measurementLongFormat", "measurementsWideFormat", + "partLongFormat", "partWideFormat", + "operator", "dataFormat" + )) TrafficContainer <- jaspResults[["trafficPlot"]] valuesVec <- .rAndRtableRange(dataset = dataset, measurements = measurements, parts = parts, operators = operators, options = options, jaspResults, ready = ready, GRRpercent = TRUE) From 0c335e46b98f28d773049ed1c742f0efeeb3d4da Mon Sep 17 00:00:00 2001 From: JTPetter Date: Fri, 3 Jul 2026 17:22:23 +0200 Subject: [PATCH 3/7] Improve error message --- R/doeAnalysis.R | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/R/doeAnalysis.R b/R/doeAnalysis.R index 0c47f1fc4..8949bbce7 100644 --- a/R/doeAnalysis.R +++ b/R/doeAnalysis.R @@ -1971,7 +1971,10 @@ get_levels <- function(var, num_levels, dataset) { termLabels <- attr(stats::terms(result[["object"]]), "term.labels") missingVars <- variablePair[!sapply(variablePair, function(var) any(grepl(var, termLabels, fixed = TRUE)))] if (length(missingVars) > 0) { - plot$setError(gettext("Could not plot (some of the) selected variables as they were not included in the final model. They might have been removed during model selection.")) + plot$setError(gettextf( + "Could not plot because the following selected variable(s) were not included in the final model: %1$s. They might have been removed during model selection.", + paste(missingVars, collapse = ", ") + )) jaspResults[[dep]][["contourSurfacePlot"]][[plotTitle]] <- plot next } From b1ae1a8b942ac1189dc6af98b85599333066d3bf Mon Sep 17 00:00:00 2001 From: JTPetter Date: Tue, 7 Jul 2026 16:39:42 +0200 Subject: [PATCH 4/7] Additional review comments --- R/doeAnalysis.R | 4 ++-- R/msaGaugeRR.R | 14 ++++++++------ 2 files changed, 10 insertions(+), 8 deletions(-) diff --git a/R/doeAnalysis.R b/R/doeAnalysis.R index 8949bbce7..bf63b2b7b 100644 --- a/R/doeAnalysis.R +++ b/R/doeAnalysis.R @@ -1968,8 +1968,8 @@ get_levels <- function(var, num_levels, dataset) { plotTitle <- gettextf("%1$s of %2$s vs %3$s", plotTypeString, dep, variablePairString) plot <- createJaspPlot(title = plotTitle, width = 560, height = 460) result <- jaspResults[[dep]][["doeResult"]]$object[["regression"]] - termLabels <- attr(stats::terms(result[["object"]]), "term.labels") - missingVars <- variablePair[!sapply(variablePair, function(var) any(grepl(var, termLabels, fixed = TRUE)))] + modelVars <- all.vars(attr(stats::terms(result[["object"]]), "variables")) + missingVars <- setdiff(variablePair, modelVars) if (length(missingVars) > 0) { plot$setError(gettextf( "Could not plot because the following selected variable(s) were not included in the final model: %1$s. They might have been removed during model selection.", diff --git a/R/msaGaugeRR.R b/R/msaGaugeRR.R index fedd8108e..d22113bfb 100644 --- a/R/msaGaugeRR.R +++ b/R/msaGaugeRR.R @@ -251,7 +251,7 @@ msaGaugeRR <- function(jaspResults, dataset, options, ...) { if (options[["anova"]]) { if (is.null(jaspResults[["gaugeANOVA"]])) { jaspResults[["gaugeANOVA"]] <- createJaspContainer(gettext("Gauge r&R Analysis of Variance table")) - jaspResults[["gaugeANOVA"]]$dependOn(c("processVariationReference", "historicalSdValue", "report")) + jaspResults[["gaugeANOVA"]]$dependOn(c("processVariationReference", "historicalSdValue", "report", "anova")) jaspResults[["gaugeANOVA"]]$position <- 1 } jaspResults[["gaugeANOVA"]] <- .gaugeANOVA(dataset = dataset, measurements = measurements, parts = parts, operators = operators, options = options, ready = ready, Type3 = Type3) @@ -908,7 +908,8 @@ msaGaugeRR <- function(jaspResults, dataset, options, ...) { } .gaugeVarCompGraph <- function(percentContributionValues, studyVariationValues, percentToleranceValues, Type3 = FALSE) { - sources <- gettext(c("Gauge r&R", "Repeatability", "Reproducibility", "Part-to-part")) + sourceIds <- c("gaugeRR", "repeatability", "reproducibility", "partToPart") + sources <- gettext(c("Gauge r&R", "Repeatability", "Reproducibility", "Part-to-part")) if (!all(is.na(percentToleranceValues))) { references <- gettextf(c('%% Contribution', '%% Study variation', '%% Tolerance')) values <- c(percentContributionValues, studyVariationValues, percentToleranceValues) @@ -916,15 +917,16 @@ msaGaugeRR <- function(jaspResults, dataset, options, ...) { references <- gettextf(c('%% Contribution', '%% Study Variation')) values <- c(percentContributionValues, studyVariationValues) } - plotframe <- data.frame(source = rep(sources, length(references)), + plotframe <- data.frame(sourceId = rep(sourceIds, length(references)), + source = rep(sources, length(references)), reference = rep(references, each = 4), - value = values) + value = values) plotframe$source <- factor(plotframe$source, levels = sources) yBreaks <- jaspGraphs::getPrettyAxisBreaks(c(0, plotframe$value)) if (Type3) - plotframe <- subset(plotframe, source != "Reprod") + plotframe <- subset(plotframe, sourceId != "reproducibility") p <- ggplot2::ggplot() + ggplot2::geom_bar(data = plotframe, mapping = ggplot2::aes(fill = reference, y = value, x = source), @@ -934,7 +936,7 @@ msaGaugeRR <- function(jaspResults, dataset, options, ...) { ggplot2::theme(legend.position = "right", legend.title = ggplot2::element_blank(), plot.margin = ggplot2::margin(5.5, 30, 5.5, 5.5, "pt")) + ggplot2::xlab(NULL) + - ggplot2::scale_y_continuous(name = "Percent", breaks = yBreaks, limits = range(c(yBreaks, plotframe$value))) + ggplot2::scale_y_continuous(name = gettext("Percent"), breaks = yBreaks, limits = range(c(yBreaks, plotframe$value))) return(p) } From 471dd3cdacc7630ee39c5cde4c573f9a5aa204cb Mon Sep 17 00:00:00 2001 From: JTPetter Date: Thu, 9 Jul 2026 16:26:22 +0200 Subject: [PATCH 5/7] fix unit tests --- renv.lock | 36 +++++++++++++++++ .../msaGaugeRR/4-components-of-variation.svg | 37 ++++++++---------- .../4-components-of-variation.rds | Bin 1046 -> 1010 bytes .../wf4-components-of-variation.rds | Bin 1046 -> 997 bytes .../wf4-components-of-variation.svg | 37 ++++++++---------- 5 files changed, 68 insertions(+), 42 deletions(-) diff --git a/renv.lock b/renv.lock index c5e1031f3..02fce172e 100644 --- a/renv.lock +++ b/renv.lock @@ -4438,6 +4438,42 @@ "RemoteRef": "master", "RemoteSha": "281f17a2d6761eb5ec247d7ddcd59042f01fa409" }, + "jaspTtests": { + "Package": "jaspTTests", + "Version": "0.96.5", + "Source": "GitHub", + "Type": "Package", + "Title": "T-Tests Module for JASP", + "Date": "2022-10-05", + "Author": "JASP Team", + "Website": "jasp-stats.org", + "Maintainer": "JASP Team ", + "Description": "Evaluate the difference between two means", + "License": "GPL (>= 2)", + "Encoding": "UTF-8", + "Imports": [ + "BayesFactor", + "car", + "ggplot2", + "jaspBase", + "jaspGraphs", + "logspline", + "plotrix", + "plyr" + ], + "Remotes": "jasp-stats/jaspBase, jasp-stats/jaspGraphs", + "RoxygenNote": "7.3.2", + "RemoteType": "github", + "RemoteHost": "api.github.com", + "RemoteRepo": "jaspTTests", + "RemoteUsername": "jasp-stats", + "RemoteRef": "HEAD", + "RemoteSha": "30c95319e2a7b4280d7553a84e91242ddc183516", + "NeedsCompilation": "no", + "Depends": [ + "R (>= 3.5.0)" + ] + }, "jpeg": { "Package": "jpeg", "Version": "0.1-11", diff --git a/tests/testthat/_snaps/msaGaugeRR/4-components-of-variation.svg b/tests/testthat/_snaps/msaGaugeRR/4-components-of-variation.svg index 13e57e66b..b417e513b 100644 --- a/tests/testthat/_snaps/msaGaugeRR/4-components-of-variation.svg +++ b/tests/testthat/_snaps/msaGaugeRR/4-components-of-variation.svg @@ -35,19 +35,16 @@ - - - - - - - - - - - - - + + + + + + + + + + @@ -64,14 +61,12 @@ - - - - -Gauge r&R -Repeatability -Reproducibility -Part-to-part + + + +Gauge r&R +Repeatability +Part-to-part Percent diff --git a/tests/testthat/_snaps/msaGaugeRR/reference_plotobject/4-components-of-variation.rds b/tests/testthat/_snaps/msaGaugeRR/reference_plotobject/4-components-of-variation.rds index 7abb6a45d62546a0ca517bcbed03401eb6d2ca1d..d6e43f4b24ed95fb19cd14248905fdd73be983d8 100644 GIT binary patch literal 1010 zcmV8NUd%Xt1hRc{?6OIH&+QU4=DzyA%9N^shR1# zMp|mmry~~2NvE)AT+bwlIwhs8Lm;5cv~I{h(|#`~t8}-(_`cVBtEX00&d$g#FP~XI zxjG}ea^iHi*PFtE>twcZK*_E>${4!?^e9jevR?&y3}_SRVW7t+>zkKqeLukZoOGIh zHrazVCsR@my>a5DP0-O_9;ornyj0dertjxLI@bO^nGU=DsT!X>2LN1f?f2}wZD!}} zc1EjJ=y){7Dl}p7;E0AHbNeojornpBdFqcxEaDDHOBCFCn7Om|By-1Zfcw9JSp(c{ zf!v?KTOhxX(abIL*&Lqy2!Q+r7q0$b@%GEMf;5p zKmI)V^&?HUzWefV^3xagslnoVAKd>$)15oFZXO>k{#W|QOB)I)1Ci=rN>MM|p};hp zzzfC^aJ2#VJeV&GJf0#-Wfy>x!zdVsz%)JXGm(UdbW8EO+!Z@09Yiie&Gk#`7tU=U zQxuae1&m)G(ZZbjD3IV{QV>X#K)F_0QLwv&U2DI}jT;#ZtxC?|fwoHpT^dC42xO{i zXAP3Q^9GzQo~Uno)VV5EsX!U`9uK zu_>Wni~0L3GhjU{dpa9RCNzH&(JD&sdy565Gc>9!zp^Q)IPWrFaFJB@_FoEOE_mRd z4csAvO>06*>Qs>_ky)<-MG77o7{>{6g^!%2Xhiha&vS^^hVnWZIC%#|I0T>Z+Uoh? z{tz*fMbi(d#0+a^K^?}W+{r3@2NZmlsXt^r0DM*yJBVUo|LOk#rjk8;?VHM8f16_V zA58g3;Z{vltBPQk2*|T7|Wc?UIX>fJY((V0#o?XmFl3#>R#NK zRIb+Li&qf6&F=cfx&Bs}eRrN(F1dm=S9cUd$P5%Bn1CVmnb-Gd5{w1O{}nLy0QpRFmIBLMnRP zuaJh4xpc@v*=gqnwJV7xQM07BaTpYonbvjrvzKpzdCF!BoH}s4yL57K@yxTa^Yf=y zPAokeySQ+w)9vn!g_z0S+l-pGd_Q5#Hqcjrz6KPO&6j{41^PPBI?$Ja9s~O3csu(= zQ#*HHe4prU<1xt&wElETiaDt*JdX~>_S+At{kUILp7X@cul=|!|9c{CX7y9mJ~O8i z`WTjoQ5&%SGg;5nlXc7{&_l_3W?Py@Ge;T2Ry5QM=bz) z!U!hu5K`-}SAP1ceft}vnCs^H*Ehf0x;$&XapR-Uqu)P7n#q6u@<8Cw zeT+1fZ+?68lVii#=WU1VdsB#Oh$6Ph*^bgm!BDI_@w>IqRJNm5tzYmB=C#7rKVo=+uacy^}LWE{$z zEW6Jw$J3i^c5nQfIfAZ({pI#jReX5erZnt`^cI_9oF$=Lb@Yw6k?8o+7#Mw zyzR79)P~%)o%HG&$s&ZJv=r#kd|C*Yi>@{!?g|!I%onLND;Z7I@AbJ$olKfmnWpN4 zv=~F3rw8f@XvI&%EThFH6WmIRrjThlE|+oRYYyFDPP%}^mIXbvPsNeYXI3^N#viy) QVH{id9|N8TpkfaI0468^O8@`> diff --git a/tests/testthat/_snaps/msaGaugeRR/reference_plotobject/wf4-components-of-variation.rds b/tests/testthat/_snaps/msaGaugeRR/reference_plotobject/wf4-components-of-variation.rds index 4cb89aff39c38698e68d7191077f32cdbb6c1371..8abe09aec8aa88ec93c0a029b8e0d7368c0fa4c4 100644 GIT binary patch literal 997 zcmVB0X%FA6FmA}EL-GrMnQKTJ&|_2NMK=FPl$ z@6GSMH*b5siV!kTp{OIH$fu}y=5&4c6hiu#V1R1;_XDAV9?c7=BKBO|CLy1UrWUp3 zSQ3d-T-q1|0b!@3Fr=>WuRMt?(D5^SgQ2Bg!Lh5KmSa$0xkEZC>wfh&#FzN zqwk-I@qAdyYarJ5x*3h>Z+oL*7H^Aj=QjZ0g43Vl^QIo3GpjMpSE1$LP*$N1iyPY5 z_le!GX=nw65t*lMr%eKCp{PW`t#`3I)8Auv%o4c&3CwEXZUyAN0B?Z&NK9k5^q)g` z@(KX?3KuT`V1Mc1FrLJrHz#jy-}3gxT}9_FEkAyGd8>KkiT2{nfj5etMZ4#=KiFs< zzjtln(ZyqmUbuDd;r9>s|CK(pYC|BUNu)+)N@2%e#K4p+&+$3|aD^sy9GH(Z9U38u zc^80_t-$N}z?2>864v!4(iOokQJXDFX)mye)Lc9@bK>xA~&wbFjR6mBM($<%IQne}uq zlyqqRxTu?X5fIg_KdxJ>=Of0-HvUlvJt0QzEvW z2MVP;)MOlc$fZ7V#)CFeUq8PgUTE>_DB$=VB*H%UEUzt|AL_OwX1r(`KIWLo+8Ggt z~}-jZq+r8c!~M?GB~-h||qY6W_CLNx;7N>{60>M{~o#Aj+ZX&F^9Z#1ckon%*a znW~t>ZuSmkstRfaw4zV6B%|3PVboGhlkv3dmCG{lB?m7MM=9XglAs~tlwApZVkIXc T{DBJv#*u|zWgY{9?hOC{Z@K5~ literal 1046 zcmV+x1nK)9iwFP!000002HjW9j}%1|ukM~1W@cxX0Zhb15~Id=VY7r}Sr2A=85p8& zfb9AKhA^q^u9>aS)7|N=$?oWd8#m7Cf$$e#;>CF4+)wW-xTwd%@#Oy;EnFmsl~-J&&Dn+oL)J( z^la?niFZ2P?%r64ne4sIsd>xyQ^sxseHG}NKtb7l3FvD;-vU|(dKBpEK;NEhXTPYn z^D~U^6Wwh*HravJpH4|JCyf)&ql2;i@q=nV?iZEkJhk&{KWWSVolKft{Zh5B?Aeq) zh9zRu2CV;1*R#!Z9lHtiP`Y0E268+a;|*lO;K3mcL+18e9y<{e43C#T8nTExB)Oiz z-QUw?mmh$eH84L1;r#{X4G50>1H1+EXMi3;Sd_cwqbWT61uXpwo>jo3763hE z1k-q!rk1^U^VrefZrnnOxo)pt+5YbPtFPGS?ixScd-onvE&rGtUpw~oVf%yIpKpBo z>HA2v{PGvKzj^TIo#$Vsi5=yNKPT?Nl;IS8cEBd0kiWnsv914uF0j; z1{!zo=Yh^1CO+6Vh4Bj zCOo)IL@Td-;2aBvr)g9gZmkO{-gB8RxEPmYvloMy3m*7q0(ZbbXiZ2-ohmXVQtM@) zNX|n8_i=(=?qN9}4T*knK8AQ@Aj8qX$rupf5PZh4)iuWb0b(W(O)sPpGdw#pYBCOG zPL|=DQ}C@(f55r`_-;{bBZ@is!xsRif<3Gnb!D%&K{5LeCVZrDD<`T|Mz|Bmi>X5+ z!D3GRlC;sK4io1`GUw9UK>bnK<=M>?cHj#kRbe5kb76JTakbVie1hn$cUD%<_AV9K z%hR0Yf-89Ds*ZvPnZ7~<6ELJc^Lic~2O~kUzhA}^zpp`rgvy2v-OmIgRO(D~AQZD1h*F3txJiUO#mPI|aPsNcqWKK3C!5_F- QVVqd_AH@AN@?sAF03iYW-~a#s diff --git a/tests/testthat/_snaps/msaGaugeRR/wf4-components-of-variation.svg b/tests/testthat/_snaps/msaGaugeRR/wf4-components-of-variation.svg index c254930f8..fc68dcfab 100644 --- a/tests/testthat/_snaps/msaGaugeRR/wf4-components-of-variation.svg +++ b/tests/testthat/_snaps/msaGaugeRR/wf4-components-of-variation.svg @@ -35,19 +35,16 @@ - - - - - - - - - - - - - + + + + + + + + + + @@ -68,14 +65,12 @@ - - - - -Gauge r&R -Repeatability -Reproducibility -Part-to-part + + + +Gauge r&R +Repeatability +Part-to-part Percent From 34e069a8e681a8cb8a6affb9ae77407b39e83fb7 Mon Sep 17 00:00:00 2001 From: JTPetter Date: Thu, 9 Jul 2026 16:42:24 +0200 Subject: [PATCH 6/7] update lockfile --- renv.lock | 27 +++++++++++++++++---------- 1 file changed, 17 insertions(+), 10 deletions(-) diff --git a/renv.lock b/renv.lock index 02fce172e..067516df7 100644 --- a/renv.lock +++ b/renv.lock @@ -1042,7 +1042,8 @@ "URL": "https://www.rforge.net/base64enc", "BugReports": "https://github.com/s-u/base64enc/issues", "NeedsCompilation": "yes", - "Repository": "CRAN" + "Repository": "RSPM", + "Encoding": "UTF-8" }, "bbmle": { "Package": "bbmle", @@ -1611,7 +1612,8 @@ "NeedsCompilation": "no", "Author": "John Fox [aut], Sanford Weisberg [aut], Brad Price [aut, cre]", "Maintainer": "Brad Price ", - "Repository": "CRAN" + "Repository": "RSPM", + "Encoding": "UTF-8" }, "checkmate": { "Package": "checkmate", @@ -2257,7 +2259,8 @@ "URL": "https://github.com/tpetzoldt/deSolve/", "LazyData": "yes", "NeedsCompilation": "yes", - "Repository": "CRAN" + "Repository": "RSPM", + "Encoding": "UTF-8" }, "desc": { "Package": "desc", @@ -4284,7 +4287,7 @@ "RemoteUsername": "jasp-stats", "RemoteRepo": "jaspBase", "RemoteRef": "master", - "RemoteSha": "f1944101ee749e3fcd605defca2e014ade4b3534" + "RemoteSha": "209d1787d5c9400601df960535b261029a350b12" }, "jaspDescriptives": { "Package": "jaspDescriptives", @@ -4362,7 +4365,7 @@ "RemoteUsername": "jasp-stats", "RemoteRepo": "jaspGraphs", "RemoteRef": "master", - "RemoteSha": "aebeafe01da55d32d8ebd9cfe8a6241247d0a3b1" + "RemoteSha": "cbe943517ac21078d0a502bcfaf8ae5e11756a05" }, "jaspTTests": { "Package": "jaspTTests", @@ -4734,7 +4737,8 @@ "NeedsCompilation": "yes", "Author": "Hadley Wickham [aut, cre], RStudio [cph]", "Maintainer": "Hadley Wickham ", - "Repository": "CRAN" + "Repository": "RSPM", + "Encoding": "UTF-8" }, "libcoin": { "Package": "libcoin", @@ -5488,7 +5492,8 @@ "NeedsCompilation": "yes", "Author": "Alan Genz [aut], Frank Bretz [aut], Tetsuhisa Miwa [aut], Xuefei Mi [aut], Friedrich Leisch [ctb], Fabian Scheipl [ctb], Bjoern Bornkamp [ctb] (ORCID: ), Martin Maechler [ctb] (ORCID: ), Torsten Hothorn [aut, cre] (ORCID: )", "Maintainer": "Torsten Hothorn ", - "Repository": "CRAN" + "Repository": "RSPM", + "Encoding": "UTF-8" }, "nlme": { "Package": "nlme", @@ -6199,11 +6204,12 @@ "Depends": [ "R (>= 3.5.0)" ], - "Repository": "CRAN", + "Repository": "RSPM", "URL": "https://plotrix.github.io/plotrix/, https://github.com/plotrix/plotrix", "BugReports": "https://github.com/plotrix/plotrix/issues", "Author": "Jim Lemon [aut], Ben Bolker [ctb], Sander Oom [ctb], Eduardo Klein [ctb], Barry Rowlingson [ctb], Hadley Wickham [ctb], Anupam Tyagi [ctb], Olivier Eterradossi [ctb], Gabor Grothendieck [ctb], Michael Toews [ctb], John Kane [ctb], Rolf Turner [ctb], Carl Witthoft [ctb], Julian Stander [ctb], Thomas Petzoldt [ctb], Remko Duursma [ctb], Elisa Biancotto [ctb], Ofir Levy [ctb], Christophe Dutang [ctb], Peter Solymos [ctb], Robby Engelmann [ctb], Michael Hecker [ctb], Felix Steinbeck [ctb], Hans Borchers [ctb], Henrik Singmann [ctb], Ted Toal [ctb], Derek Ogle [ctb], Darshan Baral [ctb], Ulrike Groemping [ctb], Bill Venables [ctb], The CRAN Team [ctb], Duncan Murdoch [ctb, cre]", - "Maintainer": "Duncan Murdoch " + "Maintainer": "Duncan Murdoch ", + "Encoding": "UTF-8" }, "plyr": { "Package": "plyr", @@ -8202,7 +8208,8 @@ "URL": "https://www.rforge.net/uuid", "BugReports": "https://github.com/s-u/uuid/issues", "NeedsCompilation": "yes", - "Repository": "CRAN" + "Repository": "RSPM", + "Encoding": "UTF-8" }, "vcd": { "Package": "vcd", From 366a1a457ce98b4b75847f61de459ce9dee5c5aa Mon Sep 17 00:00:00 2001 From: JTPetter Date: Fri, 10 Jul 2026 15:23:59 +0200 Subject: [PATCH 7/7] lockfile from master --- renv.lock | 65 ++++++++++--------------------------------------------- 1 file changed, 11 insertions(+), 54 deletions(-) diff --git a/renv.lock b/renv.lock index 067516df7..0891d4b76 100644 --- a/renv.lock +++ b/renv.lock @@ -1042,8 +1042,7 @@ "URL": "https://www.rforge.net/base64enc", "BugReports": "https://github.com/s-u/base64enc/issues", "NeedsCompilation": "yes", - "Repository": "RSPM", - "Encoding": "UTF-8" + "Repository": "CRAN" }, "bbmle": { "Package": "bbmle", @@ -1612,8 +1611,7 @@ "NeedsCompilation": "no", "Author": "John Fox [aut], Sanford Weisberg [aut], Brad Price [aut, cre]", "Maintainer": "Brad Price ", - "Repository": "RSPM", - "Encoding": "UTF-8" + "Repository": "CRAN" }, "checkmate": { "Package": "checkmate", @@ -2259,8 +2257,7 @@ "URL": "https://github.com/tpetzoldt/deSolve/", "LazyData": "yes", "NeedsCompilation": "yes", - "Repository": "RSPM", - "Encoding": "UTF-8" + "Repository": "CRAN" }, "desc": { "Package": "desc", @@ -4287,7 +4284,7 @@ "RemoteUsername": "jasp-stats", "RemoteRepo": "jaspBase", "RemoteRef": "master", - "RemoteSha": "209d1787d5c9400601df960535b261029a350b12" + "RemoteSha": "f1944101ee749e3fcd605defca2e014ade4b3534" }, "jaspDescriptives": { "Package": "jaspDescriptives", @@ -4365,7 +4362,7 @@ "RemoteUsername": "jasp-stats", "RemoteRepo": "jaspGraphs", "RemoteRef": "master", - "RemoteSha": "cbe943517ac21078d0a502bcfaf8ae5e11756a05" + "RemoteSha": "aebeafe01da55d32d8ebd9cfe8a6241247d0a3b1" }, "jaspTTests": { "Package": "jaspTTests", @@ -4441,42 +4438,6 @@ "RemoteRef": "master", "RemoteSha": "281f17a2d6761eb5ec247d7ddcd59042f01fa409" }, - "jaspTtests": { - "Package": "jaspTTests", - "Version": "0.96.5", - "Source": "GitHub", - "Type": "Package", - "Title": "T-Tests Module for JASP", - "Date": "2022-10-05", - "Author": "JASP Team", - "Website": "jasp-stats.org", - "Maintainer": "JASP Team ", - "Description": "Evaluate the difference between two means", - "License": "GPL (>= 2)", - "Encoding": "UTF-8", - "Imports": [ - "BayesFactor", - "car", - "ggplot2", - "jaspBase", - "jaspGraphs", - "logspline", - "plotrix", - "plyr" - ], - "Remotes": "jasp-stats/jaspBase, jasp-stats/jaspGraphs", - "RoxygenNote": "7.3.2", - "RemoteType": "github", - "RemoteHost": "api.github.com", - "RemoteRepo": "jaspTTests", - "RemoteUsername": "jasp-stats", - "RemoteRef": "HEAD", - "RemoteSha": "30c95319e2a7b4280d7553a84e91242ddc183516", - "NeedsCompilation": "no", - "Depends": [ - "R (>= 3.5.0)" - ] - }, "jpeg": { "Package": "jpeg", "Version": "0.1-11", @@ -4737,8 +4698,7 @@ "NeedsCompilation": "yes", "Author": "Hadley Wickham [aut, cre], RStudio [cph]", "Maintainer": "Hadley Wickham ", - "Repository": "RSPM", - "Encoding": "UTF-8" + "Repository": "CRAN" }, "libcoin": { "Package": "libcoin", @@ -5492,8 +5452,7 @@ "NeedsCompilation": "yes", "Author": "Alan Genz [aut], Frank Bretz [aut], Tetsuhisa Miwa [aut], Xuefei Mi [aut], Friedrich Leisch [ctb], Fabian Scheipl [ctb], Bjoern Bornkamp [ctb] (ORCID: ), Martin Maechler [ctb] (ORCID: ), Torsten Hothorn [aut, cre] (ORCID: )", "Maintainer": "Torsten Hothorn ", - "Repository": "RSPM", - "Encoding": "UTF-8" + "Repository": "CRAN" }, "nlme": { "Package": "nlme", @@ -6204,12 +6163,11 @@ "Depends": [ "R (>= 3.5.0)" ], - "Repository": "RSPM", + "Repository": "CRAN", "URL": "https://plotrix.github.io/plotrix/, https://github.com/plotrix/plotrix", "BugReports": "https://github.com/plotrix/plotrix/issues", "Author": "Jim Lemon [aut], Ben Bolker [ctb], Sander Oom [ctb], Eduardo Klein [ctb], Barry Rowlingson [ctb], Hadley Wickham [ctb], Anupam Tyagi [ctb], Olivier Eterradossi [ctb], Gabor Grothendieck [ctb], Michael Toews [ctb], John Kane [ctb], Rolf Turner [ctb], Carl Witthoft [ctb], Julian Stander [ctb], Thomas Petzoldt [ctb], Remko Duursma [ctb], Elisa Biancotto [ctb], Ofir Levy [ctb], Christophe Dutang [ctb], Peter Solymos [ctb], Robby Engelmann [ctb], Michael Hecker [ctb], Felix Steinbeck [ctb], Hans Borchers [ctb], Henrik Singmann [ctb], Ted Toal [ctb], Derek Ogle [ctb], Darshan Baral [ctb], Ulrike Groemping [ctb], Bill Venables [ctb], The CRAN Team [ctb], Duncan Murdoch [ctb, cre]", - "Maintainer": "Duncan Murdoch ", - "Encoding": "UTF-8" + "Maintainer": "Duncan Murdoch " }, "plyr": { "Package": "plyr", @@ -8208,8 +8166,7 @@ "URL": "https://www.rforge.net/uuid", "BugReports": "https://github.com/s-u/uuid/issues", "NeedsCompilation": "yes", - "Repository": "RSPM", - "Encoding": "UTF-8" + "Repository": "CRAN" }, "vcd": { "Package": "vcd", @@ -8722,4 +8679,4 @@ "Repository": "CRAN" } } -} +} \ No newline at end of file