| Title: | A Shiny App for Design of Experiments in Life Sciences |
|---|---|
| Description: | A shiny design of experiments (DOE) app that aids in the creation of traditional, un-replicated, augmented and partially-replicated designs applied to agriculture, plant breeding, forestry, animal and biological sciences. |
| Authors: | Didier Murillo [cre, aut], Salvador Gezan [aut], Ana Heilman [ctb], Thomas Walk [ctb], Johan Aparicio [ctb], Matthew Seefeldt [ctb], Jean-Marc Montpetit [ctb], Richard Horsley [ctb], North Dakota State University [cph] |
| Maintainer: | Didier Murillo <[email protected]> |
| License: | MIT + file LICENSE |
| Version: | 1.5.0 |
| Built: | 2026-05-28 06:57:35 UTC |
| Source: | https://github.com/didiermurillof/fieldhub |
Randomly generates an alpha design like alpha(0,1) across multiple locations.
alpha_lattice( t = NULL, k = NULL, r = NULL, l = 1, plotNumber = 101, locationNames = NULL, seed = NULL, data = NULL )alpha_lattice( t = NULL, k = NULL, r = NULL, l = 1, plotNumber = 101, locationNames = NULL, seed = NULL, data = NULL )
t |
Number of treatments. |
k |
Size of incomplete blocks (number of units per incomplete block). |
r |
Number of full blocks (or resolvable replicates) (also number of replicates per treatment). |
l |
Number of locations. By default |
plotNumber |
Numeric vector with the starting plot number for each location. By default |
locationNames |
(optional) String with names for each of the |
seed |
(optional) Real number that specifies the starting seed to obtain reproducible designs. |
data |
(optional) Data frame with label list of treatments. |
A list with two elements.
infoDesign is a list with information on the design parameters.
fieldBook is a data frame with the alpha design field book.
Didier Murillo [aut], Salvador Gezan [aut], Ana Heilman [ctb], Thomas Walk [ctb], Johan Aparicio [ctb], Richard Horsley [ctb]
Edmondson., R. N. (2021). blocksdesign: Nested and crossed block designs for factorial and unstructured treatment sets. https://CRAN.R-project.org/package=blocksdesign
# Example 1: Generates an alpha design with 4 full blocks and 15 treatments. # Size of IBlocks k = 3. alphalattice1 <- alpha_lattice(t = 15, k = 3, r = 4, l = 1, plotNumber = 101, locationNames = "GreenHouse", seed = 1247) alphalattice1$infoDesign head(alphalattice1$fieldBook, 10) # Example 2: Generates an alpha design with 3 full blocks and 25 treatment. # Size of IBlocks k = 5. # In this case, we show how to use the option data. treatments <- paste("G-", 1:25, sep = "") ENTRY <- 1:25 treatment_list <- data.frame(list(ENTRY = ENTRY, TREATMENT = treatments)) head(treatment_list) alphalattice2 <- alpha_lattice(t = 25, k = 5, r = 3, l = 1, plotNumber = 1001, locationNames = "A", seed = 1945, data = treatment_list) alphalattice2$infoDesign head(alphalattice2$fieldBook, 10)# Example 1: Generates an alpha design with 4 full blocks and 15 treatments. # Size of IBlocks k = 3. alphalattice1 <- alpha_lattice(t = 15, k = 3, r = 4, l = 1, plotNumber = 101, locationNames = "GreenHouse", seed = 1247) alphalattice1$infoDesign head(alphalattice1$fieldBook, 10) # Example 2: Generates an alpha design with 3 full blocks and 25 treatment. # Size of IBlocks k = 5. # In this case, we show how to use the option data. treatments <- paste("G-", 1:25, sep = "") ENTRY <- 1:25 treatment_list <- data.frame(list(ENTRY = ENTRY, TREATMENT = treatments)) head(treatment_list) alphalattice2 <- alpha_lattice(t = 25, k = 5, r = 3, l = 1, plotNumber = 1001, locationNames = "A", seed = 1945, data = treatment_list) alphalattice2$infoDesign head(alphalattice2$fieldBook, 10)
It randomly generates a completely randomized design.
CRD( t = NULL, reps = NULL, plotNumber = 101, locationName = NULL, seed = NULL, data = NULL )CRD( t = NULL, reps = NULL, plotNumber = 101, locationName = NULL, seed = NULL, data = NULL )
t |
An integer number with total number of treatments or a vector of dimension t with labels. |
reps |
Number of replicates of each treatment. |
plotNumber |
Starting plot number. By default |
locationName |
(optional) Name of the location. |
seed |
(optional) Real number that specifies the starting seed to obtain reproducible designs. |
data |
(optional) Data frame with the 2 columns with labels of each treatments and its number of replicates. |
A list with two elements.
infoDesign is a list with information on the design parameters.
fieldBook is a data frame with the CRD field book.
Didier Murillo [aut], Salvador Gezan [aut], Ana Heilman [ctb], Thomas Walk [ctb], Johan Aparicio [ctb], Richard Horsley [ctb]
Federer, W. T. (1955). Experimental Design. Theory and Application. New York, USA. The Macmillan Company.
# Example 1: Generates a CRD design with 10 treatments and 5 reps each. crd1 <- CRD( t = 10, reps = 5, plotNumber = 101, seed = 1987, locationName = "Fargo" ) crd1$infoDesign head(crd1$fieldBook, 10) # Example 2: Generates a CRD design with 15 treatments and 6 reps each. Gens <- paste("Wheat", 1:15, sep = "") crd2 <- CRD( t = Gens, reps = 6, plotNumber = 1001, seed = 1654, locationName = "Fargo" ) crd2$infoDesign head(crd2$fieldBook, 10) # Example 3: Generates a CRD design with 12 treatments and 4 reps each. # In this case, we show how to use the option data. treatments <- paste("ND-", 1:12, sep = "") treatment_list <- data.frame(list(TREATMENT = treatments, REP = 4)) head(treatment_list) crd3 <- CRD( t = NULL, reps = NULL, plotNumber = 2001, seed = 1655, locationName = "Cali", data = treatment_list ) crd3$infoDesign head(crd3$fieldBook, 10)# Example 1: Generates a CRD design with 10 treatments and 5 reps each. crd1 <- CRD( t = 10, reps = 5, plotNumber = 101, seed = 1987, locationName = "Fargo" ) crd1$infoDesign head(crd1$fieldBook, 10) # Example 2: Generates a CRD design with 15 treatments and 6 reps each. Gens <- paste("Wheat", 1:15, sep = "") crd2 <- CRD( t = Gens, reps = 6, plotNumber = 1001, seed = 1654, locationName = "Fargo" ) crd2$infoDesign head(crd2$fieldBook, 10) # Example 3: Generates a CRD design with 12 treatments and 4 reps each. # In this case, we show how to use the option data. treatments <- paste("ND-", 1:12, sep = "") treatment_list <- data.frame(list(TREATMENT = treatments, REP = 4)) head(treatment_list) crd3 <- CRD( t = NULL, reps = NULL, plotNumber = 2001, seed = 1655, locationName = "Cali", data = treatment_list ) crd3$infoDesign head(crd3$fieldBook, 10)
Randomly generates an spatial un-replicated diagonal arrangement design.
diagonal_arrangement( nrows = NULL, ncols = NULL, lines = NULL, checks = NULL, planter = "serpentine", l = 1, plotNumber = 101, kindExpt = "SUDC", splitBy = "row", seed = NULL, blocks = NULL, exptName = NULL, locationNames = NULL, multiLocationData = FALSE, data = NULL )diagonal_arrangement( nrows = NULL, ncols = NULL, lines = NULL, checks = NULL, planter = "serpentine", l = 1, plotNumber = 101, kindExpt = "SUDC", splitBy = "row", seed = NULL, blocks = NULL, exptName = NULL, locationNames = NULL, multiLocationData = FALSE, data = NULL )
nrows |
Number of rows in the field. |
ncols |
Number of columns in the field. |
lines |
Number of genotypes, experimental lines or treatments. |
checks |
Number of genotypes checks. |
planter |
Option for |
l |
Number of locations or sites. By default |
plotNumber |
Numeric vector with the starting plot number for each location.
By default |
kindExpt |
Type of diagonal design, with single options: Single Un-replicated Diagonal Checks
|
splitBy |
Option to split the field when |
seed |
(optional) Real number that specifies the starting seed to obtain reproducible designs. |
blocks |
Number of experiments or blocks to generate an |
exptName |
(optional) Name of the experiment. |
locationNames |
(optional) Names each location. |
multiLocationData |
(optional) Option to pass an entry list for multiple locations.
By default |
data |
(optional) Data frame with 2 columns: |
A list with five elements.
infoDesign is a list with information on the design parameters.
layoutRandom is a matrix with the randomization layout.
plotsNumber is a matrix with the layout plot number.
data_entry is a data frame with the data input.
fieldBook is a data frame with field book design. This includes the index (Row, Column).
Didier Murillo [aut], Salvador Gezan [aut], Ana Heilman [ctb], Thomas Walk [ctb], Johan Aparicio [ctb], Richard Horsley [ctb]
Clarke, G. P. Y., & Stefanova, K. T. (2011). Optimal design for early-generation plant breeding trials with unreplicated or partially replicated test lines. Australian & New Zealand Journal of Statistics, 53(4), 461–480.
# Example 1: Generates a spatial single diagonal arrangement design in one location # with 270 treatments and 30 check plots for a field with dimensions 15 rows x 20 cols # in a serpentine arrangement. spatd <- diagonal_arrangement( nrows = 15, ncols = 20, lines = 270, checks = 4, plotNumber = 101, kindExpt = "SUDC", planter = "serpentine", seed = 1987, exptName = "20WRY1", locationNames = "MINOT" ) spatd$infoDesign spatd$layoutRandom spatd$plotsNumber head(spatd$fieldBook, 12) # Example 2: Generates a spatial decision block diagonal arrangement design in one location # with 720 treatments allocated in 5 experiments or blocks for a field with dimensions # 30 rows x 26 cols in a serpentine arrangement. In this case, we show how to set up the data # option with the entries list. checks <- 5;expts <- 5 list_checks <- paste("CH", 1:checks, sep = "") treatments <- paste("G", 6:725, sep = "") treatment_list <- data.frame(list(ENTRY = 1:725, NAME = c(list_checks, treatments))) head(treatment_list, 12) tail(treatment_list, 12) spatDB <- diagonal_arrangement( nrows = 30, ncols = 26, checks = 5, plotNumber = 1, kindExpt = "DBUDC", planter = "serpentine", splitBy = "row", blocks = c(150,155,95,200,120), data = treatment_list ) spatDB$infoDesign spatDB$layoutRandom spatDB$plotsNumber head(spatDB$fieldBook,12) # Example 3: Generates a spatial decision block diagonal arrangement design in one location # with 270 treatments allocated in 3 experiments or blocks for a field with dimensions # 20 rows x 15 cols in a serpentine arrangement. Which in turn is an augmented block (3 blocks). spatAB <- diagonal_arrangement( nrows = 20, ncols = 15, lines = 270, checks = 4, plotNumber = c(1,1001,2001), kindExpt = "DBUDC", planter = "serpentine", exptName = c("20WRA", "20WRB", "20WRC"), blocks = c(90, 90, 90), splitBy = "column" ) spatAB$infoDesign spatAB$layoutRandom spatAB$plotsNumber head(spatAB$fieldBook,12)# Example 1: Generates a spatial single diagonal arrangement design in one location # with 270 treatments and 30 check plots for a field with dimensions 15 rows x 20 cols # in a serpentine arrangement. spatd <- diagonal_arrangement( nrows = 15, ncols = 20, lines = 270, checks = 4, plotNumber = 101, kindExpt = "SUDC", planter = "serpentine", seed = 1987, exptName = "20WRY1", locationNames = "MINOT" ) spatd$infoDesign spatd$layoutRandom spatd$plotsNumber head(spatd$fieldBook, 12) # Example 2: Generates a spatial decision block diagonal arrangement design in one location # with 720 treatments allocated in 5 experiments or blocks for a field with dimensions # 30 rows x 26 cols in a serpentine arrangement. In this case, we show how to set up the data # option with the entries list. checks <- 5;expts <- 5 list_checks <- paste("CH", 1:checks, sep = "") treatments <- paste("G", 6:725, sep = "") treatment_list <- data.frame(list(ENTRY = 1:725, NAME = c(list_checks, treatments))) head(treatment_list, 12) tail(treatment_list, 12) spatDB <- diagonal_arrangement( nrows = 30, ncols = 26, checks = 5, plotNumber = 1, kindExpt = "DBUDC", planter = "serpentine", splitBy = "row", blocks = c(150,155,95,200,120), data = treatment_list ) spatDB$infoDesign spatDB$layoutRandom spatDB$plotsNumber head(spatDB$fieldBook,12) # Example 3: Generates a spatial decision block diagonal arrangement design in one location # with 270 treatments allocated in 3 experiments or blocks for a field with dimensions # 20 rows x 15 cols in a serpentine arrangement. Which in turn is an augmented block (3 blocks). spatAB <- diagonal_arrangement( nrows = 20, ncols = 15, lines = 270, checks = 4, plotNumber = c(1,1001,2001), kindExpt = "DBUDC", planter = "serpentine", exptName = c("20WRA", "20WRB", "20WRC"), blocks = c(90, 90, 90), splitBy = "column" ) spatAB$infoDesign spatAB$layoutRandom spatAB$plotsNumber head(spatAB$fieldBook,12)
Generate the sparse or p-rep allocation to multiple locations.
do_optim( design = "sparse", lines, l, copies_per_entry, add_checks = FALSE, checks = NULL, rep_checks = NULL, force_balance = TRUE, seed, data = NULL )do_optim( design = "sparse", lines, l, copies_per_entry, add_checks = FALSE, checks = NULL, rep_checks = NULL, force_balance = TRUE, seed, data = NULL )
design |
Type of experimental design. It can be |
lines |
Number of genotypes, experimental lines or treatments. |
l |
Number of locations or sites. By default |
copies_per_entry |
Number of copies per plant.
When design is |
add_checks |
Option to add checks. Optional if |
checks |
Number of genotypes checks. |
rep_checks |
Replication for each check. |
force_balance |
Get balanced unbalanced locations. By default |
seed |
(optional) Real number that specifies the starting seed to obtain reproducible designs. |
data |
(optional) Data frame with 2 columns: |
A list with three elements.
list_locs is a list with each location list of entries.
allocation is a matrix with the allocation of treatments.
size_locations is a data frame with one column for each
location and one row with the size of the location.
Didier Murillo [aut], Salvador Gezan [aut], Ana Heilman [ctb]
Edmondson, R.N. Multi-level Block Designs for Comparative Experiments. JABES 25, 500–522 (2020). https://doi.org/10.1007/s13253-020-00416-0
sparse_example <- do_optim( design = "sparse", lines = 120, l = 4, copies_per_entry = 3, add_checks = TRUE, checks = 4, seed = 15 )sparse_example <- do_optim( design = "sparse", lines = 120, l = 4, copies_per_entry = 3, add_checks = TRUE, checks = 4, seed = 15 )
It randomly generates a full factorial design across locations.
full_factorial( setfactors = NULL, reps = NULL, l = 1, type = 2, plotNumber = 101, continuous = FALSE, planter = "serpentine", seed = NULL, locationNames = NULL, factorLabels = TRUE, data = NULL )full_factorial( setfactors = NULL, reps = NULL, l = 1, type = 2, plotNumber = 101, continuous = FALSE, planter = "serpentine", seed = NULL, locationNames = NULL, factorLabels = TRUE, data = NULL )
setfactors |
Numeric vector with levels of each factor. |
reps |
Number of replicates (full blocks). |
l |
Number of locations. By default |
type |
Option for CRD or RCBD designs. Values are |
plotNumber |
Numeric vector with the starting plot number for
each location. By default |
continuous |
Logical for plot number continuous or not. By
default |
planter |
Option for |
seed |
(optional) Real number that specifies the starting seed to obtain reproducible designs. |
locationNames |
(optional) Names for each location. |
factorLabels |
(optional) If |
data |
(optional) Data frame with the labels of factors. |
A list with two elements.
infoDesign is a list with information on the design parameters.
fieldBook is a data frame with the full factorial field book.
Didier Murillo [aut], Salvador Gezan [aut], Ana Heilman [ctb], Thomas Walk [ctb], Johan Aparicio [ctb], Richard Horsley [ctb]
Federer, W. T. (1955). Experimental Design. Theory and Application. New York, USA. The Macmillan Company.
# Example 1: Generates a full factorial with 3 factors each with 2 levels. # This in an RCBD arrangement with 3 reps. fullFact1 <- full_factorial(setfactors = c(2,2,2), reps = 3, l = 1, type = 2, plotNumber = 101, continuous = TRUE, planter = "serpentine", seed = 325, locationNames = "FARGO") fullFact1$infoDesign head(fullFact1$fieldBook,10) # Example 2: Generates a full factorial with 3 factors and each with levels: 2,3, # and 2, respectively. In this case, we show how to use the option data FACTORS <- rep(c("A", "B", "C"), c(2,3,2)) LEVELS <- c("a0", "a1", "b0", "b1", "b2", "c0", "c1") data_factorial <- data.frame(list(FACTOR = FACTORS, LEVEL = LEVELS)) print(data_factorial) # This in an RCBD arrangement with 5 reps in 3 locations. fullFact2 <- full_factorial(setfactors = NULL, reps = 5, l = 3, type = 2, plotNumber = c(101,1001,2001), continuous = FALSE, planter = "serpentine", seed = 326, locationNames = c("Loc1","Loc2","Loc3"), data = data_factorial) fullFact2$infoDesign head(fullFact2$fieldBook,10)# Example 1: Generates a full factorial with 3 factors each with 2 levels. # This in an RCBD arrangement with 3 reps. fullFact1 <- full_factorial(setfactors = c(2,2,2), reps = 3, l = 1, type = 2, plotNumber = 101, continuous = TRUE, planter = "serpentine", seed = 325, locationNames = "FARGO") fullFact1$infoDesign head(fullFact1$fieldBook,10) # Example 2: Generates a full factorial with 3 factors and each with levels: 2,3, # and 2, respectively. In this case, we show how to use the option data FACTORS <- rep(c("A", "B", "C"), c(2,3,2)) LEVELS <- c("a0", "a1", "b0", "b1", "b2", "c0", "c1") data_factorial <- data.frame(list(FACTOR = FACTORS, LEVEL = LEVELS)) print(data_factorial) # This in an RCBD arrangement with 5 reps in 3 locations. fullFact2 <- full_factorial(setfactors = NULL, reps = 5, l = 3, type = 2, plotNumber = c(101,1001,2001), continuous = FALSE, planter = "serpentine", seed = 326, locationNames = c("Loc1","Loc2","Loc3"), data = data_factorial) fullFact2$infoDesign head(fullFact2$fieldBook,10)
Randomly generates a resolvable incomplete block design (IBD) of characteristics (t, k, r). The randomization can be done across locations.
incomplete_blocks( t = NULL, k = NULL, r = NULL, l = 1, plotNumber = 101, locationNames = NULL, seed = NULL, data = NULL )incomplete_blocks( t = NULL, k = NULL, r = NULL, l = 1, plotNumber = 101, locationNames = NULL, seed = NULL, data = NULL )
t |
Number of treatments. |
k |
Size of incomplete blocks (number of units per incomplete block). |
r |
Number of full blocks (or resolvable replicates) (also number of replicates per treatment). |
l |
Number of locations. By default |
plotNumber |
Numeric vector with the starting plot number for each location. By default |
locationNames |
(optional) Names for each location. |
seed |
(optional) Real number that specifies the starting seed to obtain reproducible designs. |
data |
(optional) Data frame with label list of treatments. |
A list with two elements.
infoDesign is a list with information on the design parameters.
fieldBook is a data frame with the incomplete block design field book.
Didier Murillo [aut], Salvador Gezan [aut], Ana Heilman [ctb], Thomas Walk [ctb], Johan Aparicio [ctb], Richard Horsley [ctb]
Edmondson., R. N. (2021). blocksdesign: Nested and crossed block designs for factorial and unstructured treatment sets. https://CRAN.R-project.org/package=blocksdesign
# Example 1: Generates a resolvable IBD of characteristics (t,k,r) = (12,4,2). # 1-resolvable IBDs ibd1 <- incomplete_blocks(t = 12, k = 4, r = 2, seed = 1984) ibd1$infoDesign head(ibd1$fieldBook) # Example 2: Generates a balanced resolvable IBD of characteristics (t,k,r) = (15,3,7). # In this case, we show how to use the option data. treatments <- paste("TX-", 1:15, sep = "") ENTRY <- 1:15 treatment_list <- data.frame(list(ENTRY = ENTRY, TREATMENT = treatments)) head(treatment_list) ibd2 <- incomplete_blocks(t = 15, k = 3, r = 7, seed = 1985, data = treatment_list) ibd2$infoDesign head(ibd2$fieldBook)# Example 1: Generates a resolvable IBD of characteristics (t,k,r) = (12,4,2). # 1-resolvable IBDs ibd1 <- incomplete_blocks(t = 12, k = 4, r = 2, seed = 1984) ibd1$infoDesign head(ibd1$fieldBook) # Example 2: Generates a balanced resolvable IBD of characteristics (t,k,r) = (15,3,7). # In this case, we show how to use the option data. treatments <- paste("TX-", 1:15, sep = "") ENTRY <- 1:15 treatment_list <- data.frame(list(ENTRY = ENTRY, TREATMENT = treatments)) head(treatment_list) ibd2 <- incomplete_blocks(t = 15, k = 3, r = 7, seed = 1985, data = treatment_list) ibd2$infoDesign head(ibd2$fieldBook)
Randomly generates a latin square design of up 10 treatments.
latin_square( t = NULL, reps = 1, plotNumber = 101, planter = "serpentine", seed = NULL, locationNames = NULL, data = NULL )latin_square( t = NULL, reps = 1, plotNumber = 101, planter = "serpentine", seed = NULL, locationNames = NULL, data = NULL )
t |
Number of treatments. |
reps |
Number of full resolvable squares. By default |
plotNumber |
Starting plot number. By default |
planter |
Option for |
seed |
(optional) Real number that specifies the starting seed to obtain reproducible designs. |
locationNames |
(optional) Name for the location. |
data |
(optional) Data frame with label list of treatments. |
A list with information on the design parameters.
Data frame with the latin square field book.
A list with two elements.
infoDesign is a list with information on the design parameters.
fieldBook is a data frame with the latin square field book.
Didier Murillo [aut], Salvador Gezan [aut], Ana Heilman [ctb], Thomas Walk [ctb], Johan Aparicio [ctb], Thiago de Paula Oliveira[ctb] Richard Horsley [ctb]
Federer, W. T. (1955). Experimental Design. Theory and Application. New York, USA. The Macmillan Company.
# Example 1: Generates a latin square design with 4 treatments and 2 reps. latinSq1 <- latin_square(t = 4, reps = 2, plotNumber = 101, planter = "cartesian", seed = 1980) print(latinSq1) summary(latinSq1) head(latinSq1$fieldBook) # Example 2: Generates a latin square design with 5 treatments and 3 reps. latin_data <- data.frame(list(ROW = paste("Period", 1:5, sep = ""), COLUMN = paste("Cow", 1:5, sep = ""), TREATMENT = paste("Diet", 1:5, sep = ""))) print(latin_data) latinSq2 <- latin_square(t = NULL, reps = 3, plotNumber = 101, planter = "cartesian", seed = 1981, data = latin_data) latinSq2$squares latinSq2$plotSquares head(latinSq2$fieldBook)# Example 1: Generates a latin square design with 4 treatments and 2 reps. latinSq1 <- latin_square(t = 4, reps = 2, plotNumber = 101, planter = "cartesian", seed = 1980) print(latinSq1) summary(latinSq1) head(latinSq1$fieldBook) # Example 2: Generates a latin square design with 5 treatments and 3 reps. latin_data <- data.frame(list(ROW = paste("Period", 1:5, sep = ""), COLUMN = paste("Cow", 1:5, sep = ""), TREATMENT = paste("Diet", 1:5, sep = ""))) print(latin_data) latinSq2 <- latin_square(t = NULL, reps = 3, plotNumber = 101, planter = "cartesian", seed = 1981, data = latin_data) latinSq2$squares latinSq2$plotSquares head(latinSq2$fieldBook)
Optimized multi-location partially replicated design
multi_location_prep( lines, nrows, ncols, l, planter = "serpentine", plotNumber, desired_avg, copies_per_entry, checks = NULL, rep_checks = NULL, exptName, locationNames, optim_list, seed, spread_reps = TRUE, data = NULL )multi_location_prep( lines, nrows, ncols, l, planter = "serpentine", plotNumber, desired_avg, copies_per_entry, checks = NULL, rep_checks = NULL, exptName, locationNames, optim_list, seed, spread_reps = TRUE, data = NULL )
lines |
Number of genotypes, experimental lines or treatments. |
nrows |
Numeric vector with the number of rows field at each location. |
ncols |
Numeric vector with the number of columns field at each location. |
l |
Number of locations. By default |
planter |
Option for |
plotNumber |
Numeric vector with the starting plot number for each location. By default |
desired_avg |
(optional) Desired average of treatments across locations. |
copies_per_entry |
Number of total copies per treatment. |
checks |
Number of checks. |
rep_checks |
Number of replications per check. |
exptName |
(optional) Name of the experiment. |
locationNames |
(optional) Name for each location. |
optim_list |
(optional) A list object of class "MultiPrep"generated by |
seed |
(optional) Real number that specifies the starting seed to obtain reproducible designs. |
spread_reps |
A logical value indicating whether to maximize the spatial
distance between replicated treatments in the field. Default is |
data |
(optional) Data frame with 2 columns: |
A list of class FielDHub with several elements.
infoDesign is a list with information on the design parameters.
layoutRandom is a matrix with the randomization layout.
plotNumber is a matrix with the layout plot number.
binaryField is a matrix with the binary field.
dataEntry is a data frame with the data input.
genEntries is a list with the entries for replicated and non-replicated parts.
fieldBook is a data frame with field book design. This includes the index (Row, Column).
min_pairwise_distance is a data frame with the minimum pairwise distance between
each pair of locations.
reps_info is a data frame with information on the number of replicated and
non-replicated treatments at each location.
pairsDistance is a data frame with the pairwise distances between each pair of
treatments.
treatments_with_reps is a list with the entries for the replicated part of the design.
treatments_with_no_reps is a list with the entries for the non-replicated part of the design.
list_locs is a list with each location list of entries.
allocation is a matrix with the allocation of treatments.
size_locations is a data frame with one column for each
location and one row with the size of the location.
Didier Murillo [aut], Salvador Gezan [aut], Jean-Marc Montpetit [ctb], Ana Heilman [ctb]
Edmondson, R.N. Multi-level Block Designs for Comparative Experiments. JABES 25, 500–522 (2020). https://doi.org/10.1007/s13253-020-00416-0
# Example 1: Generates a spatially optimized multi-location p-rep design with 142 # genotypes. The number of copies per plant available for this experiment is 9. # This experiment is carried out in 5 locations, and there are seven seeds available # for each plant to make replications. # In this case, we add three controls (checks) with six reps each. # With this setup, the experiment will have 142 treatments + 3 checks = 145 # entries and the number of plots per location after the allocation process # will be 196. # The average genotype allocation will be 1.5 copies per location. ## Not run: optim_multi_prep <- multi_location_prep( lines = 150, l = 5, copies_per_entry = 7, checks = 3, rep_checks = c(6,6,6), locationNames = c("LOC1", "LOC2", "LOC3", "LOC4", "LOC5"), seed = 1234 ) designs <- optim_multi_prep$designs field_book_loc_1 <- designs$LOC1$fieldBook head(field_book_loc_1, 10) ## End(Not run)# Example 1: Generates a spatially optimized multi-location p-rep design with 142 # genotypes. The number of copies per plant available for this experiment is 9. # This experiment is carried out in 5 locations, and there are seven seeds available # for each plant to make replications. # In this case, we add three controls (checks) with six reps each. # With this setup, the experiment will have 142 treatments + 3 checks = 145 # entries and the number of plots per location after the allocation process # will be 196. # The average genotype allocation will be 1.5 copies per location. ## Not run: optim_multi_prep <- multi_location_prep( lines = 150, l = 5, copies_per_entry = 7, checks = 3, rep_checks = c(6,6,6), locationNames = c("LOC1", "LOC2", "LOC3", "LOC4", "LOC5"), seed = 1234 ) designs <- optim_multi_prep$designs field_book_loc_1 <- designs$LOC1$fieldBook head(field_book_loc_1, 10) ## End(Not run)
Randomly generates a spatial un-replicated optimized arrangement design, where the distance between checks is maximized in such a way that each row and column have control plots. Note that design generation needs the dimension of the field (number of rows and columns).
optimized_arrangement( nrows = NULL, ncols = NULL, lines = NULL, amountChecks = NULL, checks = NULL, planter = "serpentine", l = 1, plotNumber = 101, seed = NULL, exptName = NULL, locationNames = NULL, spread_reps = TRUE, data = NULL )optimized_arrangement( nrows = NULL, ncols = NULL, lines = NULL, amountChecks = NULL, checks = NULL, planter = "serpentine", l = 1, plotNumber = 101, seed = NULL, exptName = NULL, locationNames = NULL, spread_reps = TRUE, data = NULL )
nrows |
Number of rows in the field. |
ncols |
Number of columns in the field. |
lines |
Number of genotypes, experimental lines or treatments. |
amountChecks |
Integer with the amount total of checks or a numeric vector with the replicates of each check label. |
checks |
Number of genotypes as checks. |
planter |
Option for |
l |
Number of locations. By default |
plotNumber |
Numeric vector with the starting plot number for each location. By default |
seed |
(optional) Real number that specifies the starting seed to obtain reproducible designs. |
exptName |
(optional) Name of the experiment. |
locationNames |
(optional) Name for each location. |
spread_reps |
A logical value indicating whether to maximize the spatial
distance between replicated treatments in the field. Default is |
data |
(optional) Data frame with 3 columns: |
A list with five elements.
infoDesign is a list with information on the design parameters.
layoutRandom is a matrix with the randomization layout.
plotNumber is a matrix with the layout plot number.
dataEntry is a data frame with the data input.
genEntries is a list with the entries for replicated and no replicated part.
fieldBook is a data frame with field book design. This includes the index (Row, Column).
Didier Murillo [aut], Salvador Gezan [aut], Ana Heilman [ctb], Thomas Walk [ctb], Johan Aparicio [ctb], Richard Horsley [ctb]
Clarke, G. P. Y., & Stefanova, K. T. (2011). Optimal design for early-generation plant breeding trials with unreplicated or partially replicated test lines. Australian & New Zealand Journal of Statistics, 53(4), 461–480.
# Example 1: Generates a spatial unreplicated optimized arrangement design in one location # with 120 genotypes + 20 check plots (4 checks) for a field with dimension 14 rows x 10 cols. ## Not run: optim_unrep1 <- optimized_arrangement( nrows = 14, ncols = 10, lines = 120, amountChecks = 20, checks = 1:4, planter = "cartesian", plotNumber = 101, exptName = "20RW1", locationNames = "CASSELTON", seed = 14124 ) optim_unrep1$infoDesign optim_unrep1$layoutRandom optim_unrep1$plotNumber head(optim_unrep1$fieldBook, 12) ## End(Not run) # Example 2: Generates a spatial unreplicated optimized arrangement design in one location # with 200 genotypes + 20 check plots (4 checks) for a field with dimension 10 rows x 22 cols. # As example, we set up the data option with the entries list. ## Not run: checks <- 4 list_checks <- paste("CH", 1:checks, sep = "") treatments <- paste("G", 5:204, sep = "") REPS <- c(5, 5, 5, 5, rep(1, 200)) treatment_list <- data.frame(list(ENTRY = 1:204, NAME = c(list_checks, treatments), REPS = REPS)) head(treatment_list, 12) tail(treatment_list, 12) optim_unrep2 <- optimized_arrangement( nrows = 10, ncols = 22, planter = "serpentine", plotNumber = 101, seed = 120, exptName = "20YWA2", locationNames = "MINOT", data = treatment_list ) optim_unrep2$infoDesign optim_unrep2$layoutRandom optim_unrep2$plotNumber head(optim_unrep2$fieldBook,12) ## End(Not run)# Example 1: Generates a spatial unreplicated optimized arrangement design in one location # with 120 genotypes + 20 check plots (4 checks) for a field with dimension 14 rows x 10 cols. ## Not run: optim_unrep1 <- optimized_arrangement( nrows = 14, ncols = 10, lines = 120, amountChecks = 20, checks = 1:4, planter = "cartesian", plotNumber = 101, exptName = "20RW1", locationNames = "CASSELTON", seed = 14124 ) optim_unrep1$infoDesign optim_unrep1$layoutRandom optim_unrep1$plotNumber head(optim_unrep1$fieldBook, 12) ## End(Not run) # Example 2: Generates a spatial unreplicated optimized arrangement design in one location # with 200 genotypes + 20 check plots (4 checks) for a field with dimension 10 rows x 22 cols. # As example, we set up the data option with the entries list. ## Not run: checks <- 4 list_checks <- paste("CH", 1:checks, sep = "") treatments <- paste("G", 5:204, sep = "") REPS <- c(5, 5, 5, 5, rep(1, 200)) treatment_list <- data.frame(list(ENTRY = 1:204, NAME = c(list_checks, treatments), REPS = REPS)) head(treatment_list, 12) tail(treatment_list, 12) optim_unrep2 <- optimized_arrangement( nrows = 10, ncols = 22, planter = "serpentine", plotNumber = 101, seed = 120, exptName = "20YWA2", locationNames = "MINOT", data = treatment_list ) optim_unrep2$infoDesign optim_unrep2$layoutRandom optim_unrep2$plotNumber head(optim_unrep2$fieldBook,12) ## End(Not run)
Randomly generates a spatial partially replicated (p-rep) design for single or multiple locations.
partially_replicated( nrows = NULL, ncols = NULL, repGens = NULL, repUnits = NULL, planter = "serpentine", l = 1, plotNumber = 101, spread_reps = TRUE, seed = NULL, exptName = NULL, locationNames = NULL, multiLocationData = FALSE, dist_method = "euclidean", border_penalization = 0.5, data = NULL )partially_replicated( nrows = NULL, ncols = NULL, repGens = NULL, repUnits = NULL, planter = "serpentine", l = 1, plotNumber = 101, spread_reps = TRUE, seed = NULL, exptName = NULL, locationNames = NULL, multiLocationData = FALSE, dist_method = "euclidean", border_penalization = 0.5, data = NULL )
nrows |
Numeric vector with the number of rows field at each location. |
ncols |
Numeric vector with the number of columns field at each location. |
repGens |
Numeric vector with the amount genotypes to replicate. |
repUnits |
Numeric vector with the number of reps of each genotype. |
planter |
Option for |
l |
Number of locations. By default |
plotNumber |
Numeric vector with the starting plot number for each location. By default |
spread_reps |
A logical value indicating whether to maximize the spatial
distance between replicated treatments in the field. Default is |
seed |
(optional) Real number that specifies the starting seed to obtain reproducible designs. |
exptName |
(optional) Name of the experiment. |
locationNames |
(optional) Name for each location. |
multiLocationData |
(optional) Option to pass an entry list for multiple locations. |
dist_method |
The method used for distance calculation. Options are "euclidean" (default) and "manhattan".
By default |
border_penalization |
A tuning parameter for the centrality penalty. Default is 0.5. |
data |
(optional) Data frame with 3 columns: |
This function generates and optimizes a partially replicated (p-rep) experimental design for a given set of treatments and replication levels. The design is represented by a matrix and optimized using a pairwise distance metric. The function outputs various information about the optimized design including the field layout, replicated and unreplicated treatments, and pairwise distances between treatments. Note that the design generation needs the dimension of the field (number of rows and columns).
A list with several elements.
infoDesign is a list with information on the design parameters.
layoutRandom is a matrix with the randomization layout.
plotNumber is a matrix with the layout plot number.
binaryField is a matrix with the binary field.
dataEntry is a data frame with the data input.
genEntries is a list with the entries for replicated and non-replicated parts.
fieldBook is a data frame with field book design. This includes the index (Row, Column).
min_pairwise_distance is a data frame with the minimum pairwise distance between
each pair of locations.
reps_info is a data frame with information on the number of replicated and
non-replicated treatments at each location.
pairsDistance is a data frame with the pairwise distances between each pair of
treatments.
treatments_with_reps is a list with the entries for the replicated part of the design.
treatments_with_no_reps is a list with the entries for the non-replicated part of the design.
Didier Murillo [aut], Salvador Gezan [aut], Ana Heilman [ctb], Thomas Walk [ctb], Johan Aparicio [ctb], Jean-Marc Montpetit [ctb], Richard Horsley [ctb]
Cullis, S., B. R., & Coombes, N. E. (2006). On the design of early generation variety trials with correlated data. Journal of Agricultural, Biological, and Environmental Statistics, 11, 381–393. https://doi.org/10.1198/108571106X154443
# Example 1: Generates a spatial optimized partially replicated arrangement design in one # location with 335 genotypes for a field with dimensions 15 rows x 28 cols. # Note that there are 250 genotypes unreplicated (only one time), 85 genotypes replicated # two times, and three checks 8 times each. ## Not run: prep_deseign1 <- partially_replicated( nrows = 12, ncols = 37, repGens = c(250, 85, 3), repUnits = c(1, 2, 8), planter = "cartesian", plotNumber = 101, seed = 77 ) prep_deseign1$infoDesign prep_deseign1$layoutRandom prep_deseign1$plotNumber head(prep_deseign1$fieldBook, 12) ## End(Not run) # Example 2: Generates a spatial optimized partially replicated arrangement design with 492 # genotypes in a field with dimensions 30 rows x 20 cols. Note that there 384 genotypes # unreplicated (only one time), 108 genotypes replicated two times. # In this case we don't have check plots. # As example, we set up the data option with the entries list. ## Not run: NAME <- paste("G", 1:492, sep = "") repGens = c(108, 384);repUnits = c(2,1) REPS <- rep(repUnits, repGens) treatment_list <- data.frame(list(ENTRY = 1:492, NAME = NAME, REPS = REPS)) head(treatment_list, 12) tail(treatment_list, 12) prep_deseign2 <- partially_replicated( nrows = 30, ncols = 20, planter = "serpentine", plotNumber = 101, seed = 41, data = treatment_list ) prep_deseign2$infoDesign prep_deseign2$layoutRandom prep_deseign2$plotNumber head(prep_deseign2$fieldBook, 10) ## End(Not run)# Example 1: Generates a spatial optimized partially replicated arrangement design in one # location with 335 genotypes for a field with dimensions 15 rows x 28 cols. # Note that there are 250 genotypes unreplicated (only one time), 85 genotypes replicated # two times, and three checks 8 times each. ## Not run: prep_deseign1 <- partially_replicated( nrows = 12, ncols = 37, repGens = c(250, 85, 3), repUnits = c(1, 2, 8), planter = "cartesian", plotNumber = 101, seed = 77 ) prep_deseign1$infoDesign prep_deseign1$layoutRandom prep_deseign1$plotNumber head(prep_deseign1$fieldBook, 12) ## End(Not run) # Example 2: Generates a spatial optimized partially replicated arrangement design with 492 # genotypes in a field with dimensions 30 rows x 20 cols. Note that there 384 genotypes # unreplicated (only one time), 108 genotypes replicated two times. # In this case we don't have check plots. # As example, we set up the data option with the entries list. ## Not run: NAME <- paste("G", 1:492, sep = "") repGens = c(108, 384);repUnits = c(2,1) REPS <- rep(repUnits, repGens) treatment_list <- data.frame(list(ENTRY = 1:492, NAME = NAME, REPS = REPS)) head(treatment_list, 12) tail(treatment_list, 12) prep_deseign2 <- partially_replicated( nrows = 30, ncols = 20, planter = "serpentine", plotNumber = 101, seed = 41, data = treatment_list ) prep_deseign2$infoDesign prep_deseign2$layoutRandom prep_deseign2$plotNumber head(prep_deseign2$fieldBook, 10) ## End(Not run)
FielDHub objectDraw a field layout plot for a FielDHub object.
## S3 method for class 'FielDHub' plot(x, ...)## S3 method for class 'FielDHub' plot(x, ...)
x |
a object inheriting from class |
... |
further arguments passed to utility function
|
a plot object inheriting from class fieldLayout
field_book a data frame with the fieldbook that includes the coordinates ROW and COLUMN.
Didier Murillo [aut]
## Not run: # Example 1: Plot a RCBD design with 24 treatments and 3 reps. s <- RCBD(t = 24, reps = 3, plotNumber = 101, seed = 12) plot(s) ## End(Not run)## Not run: # Example 1: Plot a RCBD design with 24 treatments and 3 reps. s <- RCBD(t = 24, reps = 3, plotNumber = 101, seed = 12) plot(s) ## End(Not run)
FielDHub objectPrints information about any FielDHub function.
## S3 method for class 'FielDHub' print(x, n, ...)## S3 method for class 'FielDHub' print(x, n, ...)
x |
an object inheriting from class |
n |
a single integer. If positive or zero, size for the resulting object: number of elements for a vector (including lists), rows for a matrix or data frame or lines for a function. If negative, all but the n last/first number of elements of x. |
... |
further arguments passed to |
an object inheriting from class FielDHub
Thiago de Paula Oliveira, [email protected] [aut], Didier Murillo [aut]
# Example 1: Generates a CRD design with 5 treatments and 5 reps each. crd1 <- CRD(t = 5, reps = 5, plotNumber = 101, seed = 1985, locationName = "Fargo") crd1$infoDesign print(crd1)# Example 1: Generates a CRD design with 5 treatments and 5 reps each. crd1 <- CRD(t = 5, reps = 5, plotNumber = 101, seed = 1985, locationName = "Fargo") crd1$infoDesign print(crd1)
fieldLayout plot objectPrints a plot object of class fieldLayout.
## S3 method for class 'fieldLayout' print(x, ...)## S3 method for class 'fieldLayout' print(x, ...)
x |
a plot object inheriting from class fieldLayout. |
... |
unused, for extensibility. |
a plot object inheriting from class fieldLayout.
Didier Murillo [aut]
FielDHub objectPrint summary information on the design parameters, and data frame structure
## S3 method for class 'summary.FielDHub' print(x, ...)## S3 method for class 'summary.FielDHub' print(x, ...)
x |
an object inheriting from class |
... |
Unused, for extensibility |
an object inheriting from class FielDHub
Thiago de Paula Oliveira, [email protected] [aut], Didier Murillo [aut]
It randomly generates a randomized complete block design (RCBD) across locations.
RCBD( t = NULL, reps = NULL, l = 1, plotNumber = 101, continuous = FALSE, planter = "serpentine", seed = NULL, locationNames = NULL, data = NULL )RCBD( t = NULL, reps = NULL, l = 1, plotNumber = 101, continuous = FALSE, planter = "serpentine", seed = NULL, locationNames = NULL, data = NULL )
t |
An integer number with total number of treatments or a vector of dimension t with labels. |
reps |
Number of replicates (full blocks) of each treatment. |
l |
Number of locations. By default |
plotNumber |
Numeric vector with the starting plot number for each location. By default |
continuous |
Logical value for plot number continuous or not. By default |
planter |
Option for |
seed |
(optional) Real number that specifies the starting seed to obtain reproducible designs. |
locationNames |
(optional) Names for each location. |
data |
(optional) Data frame with the labels of treatments. |
A list with five elements.
infoDesign is a list with information on the design parameters.
layoutRandom is the RCBD layout randomization for each location.
plotNumber is the plot number layout for each location.
fieldBook is a data frame with the RCBD field book design.
Didier Murillo [aut], Salvador Gezan [aut], Ana Heilman [ctb], Thomas Walk [ctb], Johan Aparicio [ctb], Richard Horsley [ctb]
Federer, W. T. (1955). Experimental Design. Theory and Application. New York, USA. The Macmillan Company.
# Example 1: Generates a RCBD design with 3 blocks and 20 treatments across 3 locations. rcbd1 <- RCBD(t = LETTERS[1:20], reps = 5, l = 3, plotNumber = c(101,1001, 2001), continuous = TRUE, planter = "serpentine", seed = 1020, locationNames = c("FARGO", "MINOT", "CASSELTON")) rcbd1$infoDesign rcbd1$layoutRandom rcbd1$plotNumber head(rcbd1$fieldBook) # Example 2: Generates a RCBD design with 6 blocks and 18 treatments in one location. # In this case, we show how to use the option data. treatments <- paste("ND-", 1:18, sep = "") treatment_list <- data.frame(list(TREATMENT = treatments)) head(treatment_list) rcbd2 <- RCBD(reps = 6, l = 1, plotNumber = 101, continuous = FALSE, planter = "serpentine", seed = 13, locationNames = "IBAGUE", data = treatment_list) rcbd2$infoDesign rcbd2$layoutRandom rcbd2$plotNumber head(rcbd2$fieldBook)# Example 1: Generates a RCBD design with 3 blocks and 20 treatments across 3 locations. rcbd1 <- RCBD(t = LETTERS[1:20], reps = 5, l = 3, plotNumber = c(101,1001, 2001), continuous = TRUE, planter = "serpentine", seed = 1020, locationNames = c("FARGO", "MINOT", "CASSELTON")) rcbd1$infoDesign rcbd1$layoutRandom rcbd1$plotNumber head(rcbd1$fieldBook) # Example 2: Generates a RCBD design with 6 blocks and 18 treatments in one location. # In this case, we show how to use the option data. treatments <- paste("ND-", 1:18, sep = "") treatment_list <- data.frame(list(TREATMENT = treatments)) head(treatment_list) rcbd2 <- RCBD(reps = 6, l = 1, plotNumber = 101, continuous = FALSE, planter = "serpentine", seed = 13, locationNames = "IBAGUE", data = treatment_list) rcbd2$infoDesign rcbd2$layoutRandom rcbd2$plotNumber head(rcbd2$fieldBook)
It randomly generates an augmented randomized complete block design across locations (ARCBD).
RCBD_augmented( lines = NULL, checks = NULL, b = NULL, l = 1, planter = "serpentine", plotNumber = 101, repsStack = c("vertical", "horizontal"), exptName = NULL, seed = NULL, locationNames = NULL, repsExpt = 1, random = TRUE, data = NULL, nrows = NULL, ncols = NULL )RCBD_augmented( lines = NULL, checks = NULL, b = NULL, l = 1, planter = "serpentine", plotNumber = 101, repsStack = c("vertical", "horizontal"), exptName = NULL, seed = NULL, locationNames = NULL, repsExpt = 1, random = TRUE, data = NULL, nrows = NULL, ncols = NULL )
lines |
Treatments, number of lines for test. |
checks |
Number of checks per augmented block. |
b |
Number of augmented blocks. |
l |
Number of locations. By default |
planter |
Option for |
plotNumber |
Numeric vector with the starting plot number for each location. By default |
repsStack |
Option for |
exptName |
(optional) Name of experiment. |
seed |
(optional) Real number that specifies the starting seed to obtain reproducible designs. |
locationNames |
(optional) Name for each location. |
repsExpt |
(optional) Number of reps of experiment. By default |
random |
Logical value to randomize treatments or not. By default |
data |
(optional) Data frame with the labels of treatments. |
nrows |
(optional) Number of rows in the field. |
ncols |
(optional) Number of columns in the field. |
A list with five elements.
infoDesign is a list with information on the design parameters.
layoutRandom is the ARCBD layout randomization for the first location.
plotNumber is the plot number layout for the first location.
exptNames is the experiment names layout.
data_entry is a data frame with the data input.
fieldBook is a data frame with the ARCBD field book.
Didier Murillo [aut], Salvador Gezan [aut], Ana Heilman [ctb], Thomas Walk [ctb], Johan Aparicio [ctb], Richard Horsley [ctb]
Federer, W. T. (1955). Experimental Design. Theory and Application. New York, USA. The Macmillan Company.
# Example 1: Generates an ARCBD with 6 blocks, 3 checks for each, and 50 treatments # in two locations. ARCBD1 <- RCBD_augmented(lines = 50, checks = 3, b = 6, l = 2, planter = "cartesian", plotNumber = c(1,1001), seed = 23, locationNames = c("FARGO", "MINOT")) ARCBD1$infoDesign ARCBD1$layoutRandom ARCBD1$exptNames ARCBD1$plotNumber head(ARCBD1$fieldBook, 12) # Example 2: Generates an ARCBD with 17 blocks, 4 checks for each, and 350 treatments # in 3 locations. # In this case, we show how to use the option data. checks <- 4; list_checks <- paste("CH", 1:checks, sep = "") treatments <- paste("G", 5:354, sep = "") treatment_list <- data.frame(list(ENTRY = 1:354, NAME = c(list_checks, treatments))) head(treatment_list, 12) ARCBD2 <- RCBD_augmented(lines = 350, checks = 4, b = 17, l = 3, planter = "serpentine", plotNumber = c(101,1001,2001), seed = 24, locationNames = LETTERS[1:3], data = treatment_list) ARCBD2$infoDesign ARCBD2$layoutRandom ARCBD2$exptNames ARCBD2$plotNumber head(ARCBD2$fieldBook, 12)# Example 1: Generates an ARCBD with 6 blocks, 3 checks for each, and 50 treatments # in two locations. ARCBD1 <- RCBD_augmented(lines = 50, checks = 3, b = 6, l = 2, planter = "cartesian", plotNumber = c(1,1001), seed = 23, locationNames = c("FARGO", "MINOT")) ARCBD1$infoDesign ARCBD1$layoutRandom ARCBD1$exptNames ARCBD1$plotNumber head(ARCBD1$fieldBook, 12) # Example 2: Generates an ARCBD with 17 blocks, 4 checks for each, and 350 treatments # in 3 locations. # In this case, we show how to use the option data. checks <- 4; list_checks <- paste("CH", 1:checks, sep = "") treatments <- paste("G", 5:354, sep = "") treatment_list <- data.frame(list(ENTRY = 1:354, NAME = c(list_checks, treatments))) head(treatment_list, 12) ARCBD2 <- RCBD_augmented(lines = 350, checks = 4, b = 17, l = 3, planter = "serpentine", plotNumber = c(101,1001,2001), seed = 24, locationNames = LETTERS[1:3], data = treatment_list) ARCBD2$infoDesign ARCBD2$layoutRandom ARCBD2$exptNames ARCBD2$plotNumber head(ARCBD2$fieldBook, 12)
It randomly generates a rectangular lattice design across locations.
rectangular_lattice( t = NULL, k = NULL, r = NULL, l = 1, plotNumber = 101, locationNames = NULL, seed = NULL, data = NULL )rectangular_lattice( t = NULL, k = NULL, r = NULL, l = 1, plotNumber = 101, locationNames = NULL, seed = NULL, data = NULL )
t |
Number of treatments. |
k |
Size of incomplete blocks (number of units per incomplete block). |
r |
Number of blocks (full resolvable replicates). |
l |
Number of locations. By default |
plotNumber |
Numeric vector with the starting plot number for each location. By default |
locationNames |
(optional) Names for each location. |
seed |
(optional) Real number that specifies the starting seed to obtain reproducible designs. |
data |
(optional) Data frame with label list of treatments. |
A list with two elements.
infoDesign is a list with information on the design parameters.
fieldBook is a data frame with the rectangular lattice design field book.
Didier Murillo [aut], Salvador Gezan [aut], Ana Heilman [ctb], Thomas Walk [ctb], Johan Aparicio [ctb], Richard Horsley [ctb]
Edmondson., R. N. (2021). blocksdesign: Nested and crossed block designs for factorial and unstructured treatment sets. https://CRAN.R-project.org/package=blocksdesign
# Example 1: Generates a rectangular lattice design with 6 full blocks, 4 units per IBlock (k) # and 20 treatments in one location. rectangularLattice1 <- rectangular_lattice(t = 20, k = 4, r = 6, l = 1, plotNumber = 101, locationNames = "FARGO", seed = 126) rectangularLattice1$infoDesign head(rectangularLattice1$fieldBook,12) # Example 2: Generates a rectangular lattice design with 5 full blocks, 7 units per IBlock (k) # and 56 treatments across 2 locations. # In this case, we show how to use the option data. treatments <- paste("ND-", 1:56, sep = "") ENTRY <- 1:56 treatment_list <- data.frame(list(ENTRY = ENTRY, TREATMENT = treatments)) head(treatment_list) rectangularLattice2 <- rectangular_lattice(t = 56, k = 7, r = 5, l = 2, plotNumber = c(1001,2001), locationNames = c("Loc1", "Loc2"), seed = 127, data = treatment_list) rectangularLattice2$infoDesign head(rectangularLattice2$fieldBook,12)# Example 1: Generates a rectangular lattice design with 6 full blocks, 4 units per IBlock (k) # and 20 treatments in one location. rectangularLattice1 <- rectangular_lattice(t = 20, k = 4, r = 6, l = 1, plotNumber = 101, locationNames = "FARGO", seed = 126) rectangularLattice1$infoDesign head(rectangularLattice1$fieldBook,12) # Example 2: Generates a rectangular lattice design with 5 full blocks, 7 units per IBlock (k) # and 56 treatments across 2 locations. # In this case, we show how to use the option data. treatments <- paste("ND-", 1:56, sep = "") ENTRY <- 1:56 treatment_list <- data.frame(list(ENTRY = ENTRY, TREATMENT = treatments)) head(treatment_list) rectangularLattice2 <- rectangular_lattice(t = 56, k = 7, r = 5, l = 2, plotNumber = c(1001,2001), locationNames = c("Loc1", "Loc2"), seed = 127, data = treatment_list) rectangularLattice2$infoDesign head(rectangularLattice2$fieldBook,12)
It randomly generates a resolvable row-column design (RowColD). The design is optimized in both rows and columns blocking factors. The randomization can be done across multiple locations.
row_column( t = NULL, nrows = NULL, r = NULL, l = 1, plotNumber = 101, locationNames = NULL, seed = NULL, iterations = 1000, data = NULL )row_column( t = NULL, nrows = NULL, r = NULL, l = 1, plotNumber = 101, locationNames = NULL, seed = NULL, iterations = 1000, data = NULL )
t |
Number of treatments. |
nrows |
Number of rows of a full resolvable replicate. |
r |
Number of blocks (full resolvable replicates). |
l |
Number of locations. By default |
plotNumber |
Numeric vector with the starting plot number for each
location. By default |
locationNames |
(optional) Names for each location. |
seed |
(optional) Real number that specifies the starting seed to obtain reproducible designs. |
iterations |
Number of iterations for design optimization. By
default |
data |
(optional) Data frame with label list of treatments |
The Row-Column design in FielDHub is built in two stages. The first step
constructs the blocking factor Columns using Incomplete Block Units
from an incomplete block design that sets the number of incomplete blocks as
the number of Columns in the design, each of which has a dimension
equal to the number of Rows. Once this design is generated, the
Rows are used as the Row blocking factor that is optimized for
A-Efficiency, but levels within the original Columns are fixed.
To optimize the Rows while maintaining the current optimized Columns,
we use a heuristic algorithm that swaps at random treatment positions within
a given Column (Block) also selected at random. The algorithm begins
by calculating the A-Efficiency on the initial design, performs a swap iteration,
recalculates the A-Efficiency on the resulting design, and compares it with
the previous one to decide whether to keep or discard the new design. This
iterative process is repeated, by default, 1,000 times.
A list with four elements.
infoDesign is a list with information on the design parameters.
resolvableBlocks a list with the resolvable row columns blocks.
concurrence is the concurrence matrix.
fieldBook is a data frame with the row-column field book.
Didier Murillo [aut], Salvador Gezan [aut], Ana Heilman [ctb], Thomas Walk [ctb], Johan Aparicio [ctb], Richard Horsley [ctb]
Edmondson., R. N. (2021). blocksdesign: Nested and crossed block designs for factorial and unstructured treatment sets. https://CRAN.R-project.org/package=blocksdesign
# Example 1: Generates a row-column design with 2 full blocks and 24 treatments # and 6 rows. This for one location. This example uses 100 iterations for the optimization # but 1000 is the default and recomended value. rowcold1 <- row_column( t = 24, nrows = 6, r = 2, l = 1, plotNumber= 101, locationNames = "Loc1", iterations = 100, seed = 21 ) rowcold1$infoDesign rowcold1$resolvableBlocks head(rowcold1$fieldBook,12) # Example 2: Generates a row-column design with 2 full blocks and 30 treatments # and 5 rows, for one location. This example uses 100 iterations for the optimization # but 1000 is the default and recommended value. # In this case, we show how to use the option data. treatments <- paste("ND-", 1:30, sep = "") ENTRY <- 1:30 treatment_list <- data.frame(list(ENTRY = ENTRY, TREATMENT = treatments)) head(treatment_list) rowcold2 <- row_column( t = 30, nrows = 5, r = 2, l = 1, plotNumber= 1001, locationNames = "A", seed = 15, iterations = 100, data = treatment_list ) rowcold2$infoDesign rowcold2$resolvableBlocks head(rowcold2$fieldBook,12)# Example 1: Generates a row-column design with 2 full blocks and 24 treatments # and 6 rows. This for one location. This example uses 100 iterations for the optimization # but 1000 is the default and recomended value. rowcold1 <- row_column( t = 24, nrows = 6, r = 2, l = 1, plotNumber= 101, locationNames = "Loc1", iterations = 100, seed = 21 ) rowcold1$infoDesign rowcold1$resolvableBlocks head(rowcold1$fieldBook,12) # Example 2: Generates a row-column design with 2 full blocks and 30 treatments # and 5 rows, for one location. This example uses 100 iterations for the optimization # but 1000 is the default and recommended value. # In this case, we show how to use the option data. treatments <- paste("ND-", 1:30, sep = "") ENTRY <- 1:30 treatment_list <- data.frame(list(ENTRY = ENTRY, TREATMENT = treatments)) head(treatment_list) rowcold2 <- row_column( t = 30, nrows = 5, r = 2, l = 1, plotNumber= 1001, locationNames = "A", seed = 15, iterations = 100, data = treatment_list ) rowcold2$infoDesign rowcold2$resolvableBlocks head(rowcold2$fieldBook,12)
Run the Shiny Application
run_app(..., launch.browser = TRUE)run_app(..., launch.browser = TRUE)
... |
Unused, for extensibility |
launch.browser |
Logical. If ‘TRUE', the application is launched in the system’s default web browser. |
A shiny app object
Unreplicated designs using the sparse allocation approach
sparse_allocation( lines, nrows, ncols, l, planter = "serpentine", plotNumber, copies_per_entry, checks = NULL, exptName = NULL, locationNames, sparse_list, seed, data = NULL )sparse_allocation( lines, nrows, ncols, l, planter = "serpentine", plotNumber, copies_per_entry, checks = NULL, exptName = NULL, locationNames, sparse_list, seed, data = NULL )
lines |
Number of genotypes, experimental lines or treatments. |
nrows |
Number of rows in the field. |
ncols |
Number of columns in the field. |
l |
Number of locations or sites. By default |
planter |
Option for |
plotNumber |
Numeric vector with the starting plot number for each location.
By default |
copies_per_entry |
Number of copies per plant.
When design is |
checks |
Number of genotypes checks. |
exptName |
(optional) Name of the experiment. |
locationNames |
(optional) Names each location. |
sparse_list |
(optional) A class "Sparse" object generated by |
seed |
(optional) Real number that specifies the starting seed to obtain reproducible designs. |
data |
(optional) Data frame with 2 columns: |
A list with four elements.
designs is a list with each location unreplicated randomization.
list_locs is a list with each location list of entries.
allocation is a matrix with the allocation of treatments.
size_locations is a data frame with one column for each
location and one row with the size of the location.
Didier Murillo [aut], Salvador Gezan [aut], Ana Heilman [ctb]
Edmondson, R.N. Multi-level Block Designs for Comparative Experiments. JABES 25, 500–522 (2020). https://doi.org/10.1007/s13253-020-00416-0
sparse <- sparse_allocation( lines = 120, l = 4, copies_per_entry = 3, checks = 4, locationNames = c("LOC1", "LOC2", "LOC3", "LOC4", "LOC5"), seed = 1234 )sparse <- sparse_allocation( lines = 120, l = 4, copies_per_entry = 3, checks = 4, locationNames = c("LOC1", "LOC2", "LOC3", "LOC4", "LOC5"), seed = 1234 )
Split a population of genotypes randomly into several locations, with the aim of having approximatelly the same number of replicates of each genotype, line or treatment per location.
split_families(l = NULL, data = NULL)split_families(l = NULL, data = NULL)
l |
Number of locations. |
data |
Data frame with the entry (ENTRY) and the labels of each treatment (NAME) and number of individuals per family group (FAMILY). |
A list with two elements.
rowsEachlist is a table with a summary of cases.
data_locations is a data frame with the entries for each location
Didier Murillo [aut], Salvador Gezan [aut], Ana Heilman [ctb], Thomas Walk [ctb], Johan Aparicio [ctb], Richard Horsley [ctb]
# Example 1: Split a population of 3000 and 200 families into 8 locations. # Original dataset is been simulated. set.seed(77) N <- 2000; families <- 100 ENTRY <- 1:N NAME <- paste0("SB-", 1:N) FAMILY <- vector(mode = "numeric", length = N) x <- 1:N for (i in x) { FAMILY[i] <- sample(1:families, size = 1, replace = TRUE) } gen.list <- data.frame(list(ENTRY = ENTRY, NAME = NAME, FAMILY = FAMILY)) head(gen.list) # Now we are going to use the split_families() function. split_population <- split_families(l = 8, data = gen.list) print(split_population) summary(split_population) head(split_population$data_locations,12)# Example 1: Split a population of 3000 and 200 families into 8 locations. # Original dataset is been simulated. set.seed(77) N <- 2000; families <- 100 ENTRY <- 1:N NAME <- paste0("SB-", 1:N) FAMILY <- vector(mode = "numeric", length = N) x <- 1:N for (i in x) { FAMILY[i] <- sample(1:families, size = 1, replace = TRUE) } gen.list <- data.frame(list(ENTRY = ENTRY, NAME = NAME, FAMILY = FAMILY)) head(gen.list) # Now we are going to use the split_families() function. split_population <- split_families(l = 8, data = gen.list) print(split_population) summary(split_population) head(split_population$data_locations,12)
It randomly generates a split plot design (SPD) across locations.
split_plot( wp = NULL, sp = NULL, reps = NULL, type = 2, l = 1, plotNumber = 101, seed = NULL, locationNames = NULL, factorLabels = TRUE, data = NULL )split_plot( wp = NULL, sp = NULL, reps = NULL, type = 2, l = 1, plotNumber = 101, seed = NULL, locationNames = NULL, factorLabels = TRUE, data = NULL )
wp |
Number of whole plots, as an integer or a vector. |
sp |
Number of sub plots per whole plot, as an integer or a vector. |
reps |
Number of blocks (full replicates). |
type |
Option for CRD or RCBD designs. Values are |
l |
Number of locations. By default |
plotNumber |
Numeric vector with the starting plot number for each location. By default |
seed |
(optional) Real number that specifies the starting seed to obtain reproducible designs. |
locationNames |
(optional) Names for each location. |
factorLabels |
(optional) If |
data |
(optional) Data frame with label list of treatments. |
A list with two elements.
infoDesign is a list with information on the design parameters.
fieldBook is a data frame with the split plot field book.
Didier Murillo [aut], Salvador Gezan [aut], Ana Heilman [ctb], Thomas Walk [ctb], Johan Aparicio [ctb], Richard Horsley [ctb]
Federer, W. T. (1955). Experimental Design. Theory and Application. New York, USA. The Macmillan Company.
# Example 1: Generates a split plot design SPD with 4 whole plots, 2 sub plots per whole plot, # and 4 reps in an RCBD arrangement. This in for a single location. SPDExample1 <- split_plot(wp = 4, sp = 2, reps = 5, l = 1, plotNumber = 101, seed = 14, type = 2, locationNames = "FARGO") SPDExample1$infoDesign SPDExample1$layoutlocations head(SPDExample1$fieldBook,12) # Example 2: Generates a split plot design SPD with 5 whole plots # (4 types of fungicide + one control), 10 sub plots per whole plot (10 bean varieties), # and 6 reps in an RCBD arrangement. This in 3 locations or sites. # In this case, we show how to use the option data. wp <- c("NFung", paste("Fung", 1:4, sep = "")) # Fungicides (5 Whole plots) sp <- paste("Beans", 1:10, sep = "") # Beans varieties (10 sub plots) split_plot_Data <- data.frame(list(WHOLPLOT = c(wp, rep(NA, 5)), SUBPLOT = sp)) head(split_plot_Data, 12) SPDExample2 <- split_plot(reps = 6, l = 3, plotNumber = c(101, 1001, 2001), seed = 23, type = 2, locationNames = c("A", "B", "C"), data = split_plot_Data) SPDExample2$infoDesign SPDExample2$layoutlocations head(SPDExample2$fieldBook,12)# Example 1: Generates a split plot design SPD with 4 whole plots, 2 sub plots per whole plot, # and 4 reps in an RCBD arrangement. This in for a single location. SPDExample1 <- split_plot(wp = 4, sp = 2, reps = 5, l = 1, plotNumber = 101, seed = 14, type = 2, locationNames = "FARGO") SPDExample1$infoDesign SPDExample1$layoutlocations head(SPDExample1$fieldBook,12) # Example 2: Generates a split plot design SPD with 5 whole plots # (4 types of fungicide + one control), 10 sub plots per whole plot (10 bean varieties), # and 6 reps in an RCBD arrangement. This in 3 locations or sites. # In this case, we show how to use the option data. wp <- c("NFung", paste("Fung", 1:4, sep = "")) # Fungicides (5 Whole plots) sp <- paste("Beans", 1:10, sep = "") # Beans varieties (10 sub plots) split_plot_Data <- data.frame(list(WHOLPLOT = c(wp, rep(NA, 5)), SUBPLOT = sp)) head(split_plot_Data, 12) SPDExample2 <- split_plot(reps = 6, l = 3, plotNumber = c(101, 1001, 2001), seed = 23, type = 2, locationNames = c("A", "B", "C"), data = split_plot_Data) SPDExample2$infoDesign SPDExample2$layoutlocations head(SPDExample2$fieldBook,12)
It randomly generates a split split plot design (SSPD) across locations.
split_split_plot( wp = NULL, sp = NULL, ssp = NULL, reps = NULL, type = 2, l = 1, plotNumber = 101, seed = NULL, locationNames = NULL, factorLabels = TRUE, data = NULL )split_split_plot( wp = NULL, sp = NULL, ssp = NULL, reps = NULL, type = 2, l = 1, plotNumber = 101, seed = NULL, locationNames = NULL, factorLabels = TRUE, data = NULL )
wp |
Number of whole plots, as an integer or a vector. |
sp |
Number of sub plots per whole plot, as an integer or a vector. |
ssp |
Number of sub-sub plots, as an integer or a vector. |
reps |
Number of blocks (full replicates). |
type |
Option for CRD or RCBD designs. Values are |
l |
Number of locations. By default |
plotNumber |
Numeric vector with the starting plot number for each location. By default |
seed |
(optional) Real number that specifies the starting seed to obtain reproducible designs. |
locationNames |
(optional) Names for each location. |
factorLabels |
(optional) If |
data |
(optional) Data frame with label list of treatments. |
A list with two elements.
infoDesign is a list with information on the design parameters.
fieldBook is a data frame with the split split plot field book.
Didier Murillo [aut], Salvador Gezan [aut], Ana Heilman [ctb], Thomas Walk [ctb], Johan Aparicio [ctb], Richard Horsley [ctb]
Federer, W. T. (1955). Experimental Design. Theory and Application. New York, USA. The Macmillan Company.
# Example 1: Generates a split split plot design SSPD with 5 whole plots, 2 sub-plots, # 3 sub-sub plots, and 3 reps in an RCBD arrangement. This is for one location. SSPD1 <- split_split_plot(wp = 4, sp = 2, ssp = 3, reps = 5, l = 1, plotNumber = 101, seed = 23, type = 2, locationNames = "FARGO") SSPD1$infoDesign head(SSPD1$fieldBook,12) # Example 2: Generates a split split plot design SSPD with 2 whole plost # (Irrigation, No irrigation), 5 sub plots (4 types of fungicide + one control), and # 10 sub-sub plots (Ten varieties of beans), and 4 reps in an RCBD arrangement. # This is for 3 locations. In this case, we show how to use the option data. wp <- paste("IRR_", c("NO", "Yes"), sep = "") #Irrigation (2 Whole plots) sp <- c("NFung", paste("Fung", 1:4, sep = "")) #Fungicides (5 Sub plots) ssp <- paste("Beans", 1:10, sep = "") #Beans varieties (10 Sub-sub plots) split_split_plot_Data <- data.frame(list(WHOLPLOT = c(wp, rep(NA, 8)), SUBPLOT = c(sp, rep(NA, 5)), SUB_SUBPLOTS = ssp)) head(split_split_plot_Data, 10) SSPD2 <- split_split_plot(reps = 4, l = 3, plotNumber = c(101, 1001, 2001), seed = 23, type = 2, locationNames = c("A", "B", "C"), data = split_split_plot_Data) SSPD2$infoDesign head(SSPD2$fieldBook,12)# Example 1: Generates a split split plot design SSPD with 5 whole plots, 2 sub-plots, # 3 sub-sub plots, and 3 reps in an RCBD arrangement. This is for one location. SSPD1 <- split_split_plot(wp = 4, sp = 2, ssp = 3, reps = 5, l = 1, plotNumber = 101, seed = 23, type = 2, locationNames = "FARGO") SSPD1$infoDesign head(SSPD1$fieldBook,12) # Example 2: Generates a split split plot design SSPD with 2 whole plost # (Irrigation, No irrigation), 5 sub plots (4 types of fungicide + one control), and # 10 sub-sub plots (Ten varieties of beans), and 4 reps in an RCBD arrangement. # This is for 3 locations. In this case, we show how to use the option data. wp <- paste("IRR_", c("NO", "Yes"), sep = "") #Irrigation (2 Whole plots) sp <- c("NFung", paste("Fung", 1:4, sep = "")) #Fungicides (5 Sub plots) ssp <- paste("Beans", 1:10, sep = "") #Beans varieties (10 Sub-sub plots) split_split_plot_Data <- data.frame(list(WHOLPLOT = c(wp, rep(NA, 8)), SUBPLOT = c(sp, rep(NA, 5)), SUB_SUBPLOTS = ssp)) head(split_split_plot_Data, 10) SSPD2 <- split_split_plot(reps = 4, l = 3, plotNumber = c(101, 1001, 2001), seed = 23, type = 2, locationNames = c("A", "B", "C"), data = split_split_plot_Data) SSPD2$infoDesign head(SSPD2$fieldBook,12)
It randomly generates a square lattice design across locations.
square_lattice( t = NULL, k = NULL, r = NULL, l = 1, plotNumber = 101, locationNames = NULL, seed = NULL, data = NULL )square_lattice( t = NULL, k = NULL, r = NULL, l = 1, plotNumber = 101, locationNames = NULL, seed = NULL, data = NULL )
t |
Number of treatments. |
k |
Size of incomplete blocks (number of units per incomplete block). |
r |
Number of blocks (full resolvable replicates). |
l |
Number of locations. By default |
plotNumber |
Numeric vector with the starting plot number for each location. By default |
locationNames |
(optional) Names for each location. |
seed |
(optional) Real number that specifies the starting seed to obtain reproducible designs. |
data |
(optional) Data frame with label list of treatments. |
A list with two elements.
infoDesign is a list with information on the design parameters.
fieldBook is a data frame with the square lattice design field book.
Didier Murillo [aut], Salvador Gezan [aut], Ana Heilman [ctb], Thomas Walk [ctb], Johan Aparicio [ctb], Richard Horsley [ctb]
Edmondson., R. N. (2021). blocksdesign: Nested and crossed block designs for factorial and unstructured treatment sets. https://CRAN.R-project.org/package=blocksdesign
# Example 1: Generates a square lattice design with 5 full blocks, 8 units per IBlock, # 8 IBlocks for a square number of treatmens of 64 in two locations. squareLattice1 <- square_lattice(t = 64, k = 8, r = 5, l = 2, plotNumber = c(1001, 2001), locationNames = c("FARGO", "MINOT"), seed = 1986) squareLattice1$infoDesign head(squareLattice1$fieldBook,12) # Example 2: Generates a square lattice design with 3 full blocks, 7 units per IBlock, # 7 IBlocks for a square number of treatmens of 49 in one location. # In this case, we show how to use the option data. treatments <- paste("G", 1:49, sep = "") ENTRY <- 1:49 treatment_list <- data.frame(list(ENTRY = ENTRY, TREATMENT = treatments)) head(treatment_list) squareLattice2 <- square_lattice(t = 49, k = 7, r = 3, l = 1, plotNumber = 1001, locationNames = "CASSELTON", seed = 1986, data = treatment_list) squareLattice2$infoDesign head(squareLattice2$fieldBook,12)# Example 1: Generates a square lattice design with 5 full blocks, 8 units per IBlock, # 8 IBlocks for a square number of treatmens of 64 in two locations. squareLattice1 <- square_lattice(t = 64, k = 8, r = 5, l = 2, plotNumber = c(1001, 2001), locationNames = c("FARGO", "MINOT"), seed = 1986) squareLattice1$infoDesign head(squareLattice1$fieldBook,12) # Example 2: Generates a square lattice design with 3 full blocks, 7 units per IBlock, # 7 IBlocks for a square number of treatmens of 49 in one location. # In this case, we show how to use the option data. treatments <- paste("G", 1:49, sep = "") ENTRY <- 1:49 treatment_list <- data.frame(list(ENTRY = ENTRY, TREATMENT = treatments)) head(treatment_list) squareLattice2 <- square_lattice(t = 49, k = 7, r = 3, l = 1, plotNumber = 1001, locationNames = "CASSELTON", seed = 1986, data = treatment_list) squareLattice2$infoDesign head(squareLattice2$fieldBook,12)
It randomly generates a strip plot design across locations.
strip_plot( Hplots = NULL, Vplots = NULL, b = 1, l = 1, plotNumber = NULL, planter = "serpentine", locationNames = NULL, seed = NULL, factorLabels = TRUE, randomizeH = TRUE, randomizeV = FALSE, data = NULL )strip_plot( Hplots = NULL, Vplots = NULL, b = 1, l = 1, plotNumber = NULL, planter = "serpentine", locationNames = NULL, seed = NULL, factorLabels = TRUE, randomizeH = TRUE, randomizeV = FALSE, data = NULL )
Hplots |
Number of horizontal factors, as an integer or a vector. |
Vplots |
Number of vertical factors, as an integer or a vector. |
b |
Number of blocks (full replicates). |
l |
Number of locations. By default |
plotNumber |
Numeric vector with the starting plot number for each location. By default |
planter |
Option for |
locationNames |
(optional) Names for each location. |
seed |
(optional) Real number that specifies the starting seed to obtain reproducible designs. |
factorLabels |
(optional) If |
randomizeH |
Logical flag: |
randomizeV |
Logical flag: |
data |
(optional) data frame with the labels of vertical and horizontal plots. |
A list with four elements.
infoDesign is a list with information on the design parameters.
stripsBlockLoc is a list with the strip blocks for each location.
plotLayouts is a list with the layout plot numbers for each location.
fieldBook is a data frame with the strip plot field book.
Didier Murillo [aut], Salvador Gezan [aut], Ana Heilman [ctb], Thomas Walk [ctb], Johan Aparicio [ctb], Richard Horsley [ctb]
Federer, W. T. (1955). Experimental Design. Theory and Application. New York, USA. The Macmillan Company.
# Example 1: Generates a strip plot design with 5 vertical strips and 4 horizontal strips, # with 3 reps in one location. H <- paste("H", 1:4, sep = "") V <- paste("V", 1:5, sep = "") strip1 <- strip_plot( Hplots = H, Vplots = V, b = 3, l = 1, plotNumber = 101, planter = "serpentine", locationNames = "A", seed = 333 ) strip1$infoDesign strip1$stripsBlockLoc strip1$plotLayouts head(strip1$fieldBook, 12) # Example 2: Generates a strip plot design with 5 vertical strips and 5 horizontal strips, # with 6 reps across to 3 locations. In this case, we show how to use the option data. Hplots <- LETTERS[1:5] Vplots <- LETTERS[1:4] strip_data <- data.frame(list(HPLOTS = Hplots, VPLOTS = c(Vplots, NA))) head(strip_data) strip2 <- strip_plot( Hplots = 5, Vplots = 5, b = 6, l = 3, plotNumber = c(101, 1001, 2001), planter = "cartesian", locationNames = c("A", "B", "C"), seed = 222, data = strip_data ) strip2$infoDesign strip2$stripsBlockLoc strip2$plotLayouts head(strip2$fieldBook, 12)# Example 1: Generates a strip plot design with 5 vertical strips and 4 horizontal strips, # with 3 reps in one location. H <- paste("H", 1:4, sep = "") V <- paste("V", 1:5, sep = "") strip1 <- strip_plot( Hplots = H, Vplots = V, b = 3, l = 1, plotNumber = 101, planter = "serpentine", locationNames = "A", seed = 333 ) strip1$infoDesign strip1$stripsBlockLoc strip1$plotLayouts head(strip1$fieldBook, 12) # Example 2: Generates a strip plot design with 5 vertical strips and 5 horizontal strips, # with 6 reps across to 3 locations. In this case, we show how to use the option data. Hplots <- LETTERS[1:5] Vplots <- LETTERS[1:4] strip_data <- data.frame(list(HPLOTS = Hplots, VPLOTS = c(Vplots, NA))) head(strip_data) strip2 <- strip_plot( Hplots = 5, Vplots = 5, b = 6, l = 3, plotNumber = c(101, 1001, 2001), planter = "cartesian", locationNames = c("A", "B", "C"), seed = 222, data = strip_data ) strip2$infoDesign strip2$stripsBlockLoc strip2$plotLayouts head(strip2$fieldBook, 12)
FielDHub objectSummarise information on the design parameters, and data frame structure
## S3 method for class 'FielDHub' summary(object, ...)## S3 method for class 'FielDHub' summary(object, ...)
object |
an object inheriting from class
|
... |
Unused, for extensibility |
an object inheriting from class summary.FielDHub
Thiago de Paula Oliveira, [email protected]
# Example 1: Generates a CRD design with 5 treatments and 5 reps each. crd1 <- CRD(t = 5, reps = 5, plotNumber = 101, seed = 1985, locationName = "Fargo") crd1$infoDesign summary(crd1)# Example 1: Generates a CRD design with 5 treatments and 5 reps each. crd1 <- CRD(t = 5, reps = 5, plotNumber = 101, seed = 1985, locationName = "Fargo") crd1$infoDesign summary(crd1)
Modifies the input matrix X to ensure that the distance between any two occurrences
of the same integer is at least a distance d, by swapping one of the occurrences with a
candidate cell of a different integer. The function starts with starting_dist = 3 and increases it
by 1 until the algorithm no longer converges or stop_iter iterations have been performed.
This version evaluates candidate swaps using both the mean pairwise distance and a centrality penalty,
and it uses candidate sampling to reduce computation.
swap_pairs( X, starting_dist = 3, stop_iter = 10, lambda = 0.5, dist_method = "euclidean", candidate_sample_size = 4 )swap_pairs( X, starting_dist = 3, stop_iter = 10, lambda = 0.5, dist_method = "euclidean", candidate_sample_size = 4 )
X |
A matrix of integers. |
starting_dist |
The minimum starting distance to enforce between pairs of occurrences of the same integer. Default is 3. |
stop_iter |
The maximum number of iterations to perform. Default is 50. |
lambda |
A tuning parameter for the centrality penalty. Default is 0.1. |
dist_method |
The method used for distance calculation. Options are "euclidean" (default) and "manhattan". |
candidate_sample_size |
Maximum number of candidate cells to evaluate per swap. Default is 5. |
A list containing:
optim_design |
The modified matrix. |
designs |
A list of all intermediate designs, starting from the input matrix. |
distances |
A list of all pair distances for each intermediate design. |
min_distance |
The minimum distance between pairs of occurrences of the same integer in the final design. |
pairwise_distance |
A data frame with the pairwise distances for the final design. |
rows_incidence |
A vector recording the number of rows with repeated integers for each iteration. |
set.seed(123) X <- matrix(sample(c(rep(1:10, 2), 11:50), replace = FALSE), ncol = 10) B <- swap_pairs( X, starting_dist = 3, stop_iter = 50, lambda = 0.5, dist_method = "euclidean", candidate_sample_size = 3 ) B$optim_designset.seed(123) X <- matrix(sample(c(rep(1:10, 2), 11:50), replace = FALSE), ncol = 10) B <- swap_pairs( X, starting_dist = 3, stop_iter = 50, lambda = 0.5, dist_method = "euclidean", candidate_sample_size = 3 ) B$optim_design