R/triangle.design.R

Defines functions triangle.design

Documented in triangle.design

triangle.design <- function(nbprod, nbpanelist, bypanelist = nbprod * (nbprod -
                              1) / 2, labprod = 1:nbprod, labpanelist = 1:nbpanelist) {
  aux <- as.data.frame(matrix(0, nbprod * (nbprod - 1) / 2, 2))
  numligne <- 0
  for (i in 1:(nbprod - 1)) {
    for (j in (i + 1):nbprod) {
      numligne <- numligne + 1
      aux[numligne, 1] <- labprod[i]
      aux[numligne, 2] <- labprod[j]
    }
  }
  aux <- aux[sample(nrow(aux)), ]
  plan <- as.data.frame(matrix(0, nbpanelist * bypanelist, 4))
  num.test <- 0
  ligne.aux <- 0
  for (i in 1:nbpanelist) {
    for (j in 1:bypanelist) {
      ligne.aux <- ligne.aux + 1
      if (ligne.aux == nrow(aux) + 1) {
        ligne.aux <- 1
      }
      num.test <- num.test + 1
      plan[num.test, 1] <- labpanelist[i]
      plan[num.test, 2:3] <- aux[ligne.aux, ]
    }
  }
  plan <- plan[order(plan[, 2], plan[, 3]), ]
  for (i in 1:(nrow(plan))) {
    if (i %% 6 == 1) {
      plan[i, 4] <- plan[i, 2]
    }
    if (i %% 6 == 2) {
      plan[i, 4] <- plan[i, 3]
    }
    if (i %% 6 == 3) {
      plan[i, 4] <- plan[i, 3]
      plan[i, 3] <- plan[i, 2]
    }
    if (i %% 6 == 4) {
      plan[i, 4] <- plan[i, 2]
      plan[i, 2] <- plan[i, 3]
      plan[i, 3] <- plan[i, 4]
    }
    if (i %% 6 == 5) {
      plan[i, 4] <- plan[i, 3]
      plan[i, 3] <- plan[i, 2]
      plan[i, 2] <- plan[i, 4]
    }
    if (i %% 6 == 0) {
      plan[i, 4] <- plan[i, 2]
      plan[i, 2] <- plan[i, 3]
    }
  }
  plan <- plan[order(plan$V1), ]
  if (is.integer(labpanelist)) {
    row.names(plan) <- paste0("Panelist", plan$V1, ".Test", 1:bypanelist)
  } else {
    row.names(plan) <- paste0(plan$V1, ".Test", 1:bypanelist)
  }
  plan <- plan[, -1]
  colnames(plan) <- c("Product X", "Product Y", "Product Z")
  plan <- as.data.frame(plan)
  return(plan)
}

Try the SensoMineR package in your browser

Any scripts or data that you put into this service are public.

SensoMineR documentation built on July 2, 2020, 1:56 a.m.