stkp <- function(pop_waarde, pop_kans, kansmod, dec){
if(dec %in% 1:6) {   
  if(kansmod %in% 1:4) {
    if(length(pop_waarde)==length(pop_kans)) {
      if(length(pop_waarde)==length(unique(pop_waarde))) {   
        if( all(pop_kans > 0) & sum(pop_kans)==1 ) {  
          library(gt)
          library(dplyr, warn.conflicts = FALSE)
          df <- data.frame(pop_waarde, pop_kans)
          df <- df[order(df$pop_waarde),]
          pop_waarde <- df$pop_waarde
          pop_kans <- df$pop_kans
          N <- length(pop_waarde) 
          if(kansmod == 1) {          
            df$pop_kans <- round(df$pop_kans , dec)         
            mtable <- gt(df) |> 
              tab_header(title = html("populatie X<br>kansmodel")) |> 
              cols_label(
                pop_waarde = html("waarde<br>x"),
                pop_kans = html("kans<br>P( X = x )") ) }
          if(kansmod %in% 2:3) {       
            pop1 <- rep(pop_waarde, each=N)
            pop2 <- rep(pop_waarde, N)
            waarde <- paste("(", paste(pop1, pop2, sep=" , "), ")")
            kans <- round( rep(pop_kans, N) * rep(pop_kans, each=N) ,dec)
            df <- data.frame(waarde, kans) 
            mtable <- gt(df) |> 
              tab_header(title = html("steekproef van grootte twee (X<sub>1</sub> , X<sub>2</sub>)<br>kansmodel ") ) |>
              cols_label(
                waarde = html("waarde<br>( x<sub>1</sub> , x<sub>2</sub> )"),
                kans = html("kans<br>P( X<sub>1</sub>=x<sub>1</sub> , X<sub>2</sub>=x<sub>2</sub> )") )
           if(kansmod == 3) { 
              headlbl <- html("steekproef van grootte twee (X<sub>1</sub> , X<sub>2</sub>)<br>kansmodel en gemiddelden ")
              col3lbl <- html("gemiddelden<br>x&#772 = (x<sub>1</sub>+x<sub>2</sub>)/2")
              if(all(pop_waarde == c(0 , 1))) {
                headlbl <- html("steekproef van grootte twee (X<sub>1</sub> , X<sub>2</sub>)<br>kansmodel en proporties ")
                col3lbl <- html("proporties<br>p&#770 = (x<sub>1</sub>+x<sub>2</sub>)/2")} 
              mtable <- mtable |>
                tab_header(title = headlbl) |>
                cols_add( gem2 = (pop1 + pop2)/2) |>
                cols_label(gem2 = col3lbl ) }   }
          if(kansmod == 4) { 
            headlbl <- html("steekproefgemiddelde  X&#772; <br>kansmodel")
            col1lbl <- html("waarde<br>x&#772;")
            col2lbl <- html("kans<br>P( X&#772; = x&#772; )")
            if(all(pop_waarde == c(0 , 1))) {
              headlbl <- html("steekproefproportie  P&#770; <br>kansmodel")
              col1lbl <- html("waarde<br>p&#770;")
              col2lbl <- html("kans<br>P( P&#770; = p&#770; )")  }
            stkpgem_waarde <- as.factor((rep(pop_waarde, each=N) + rep(pop_waarde, N))/2 )
            stkpgem_kans <-  rep(pop_kans, N) * rep(pop_kans, each = N)
            df <- aggregate(stkpgem_kans ~ stkpgem_waarde, data = data.frame(stkpgem_waarde, stkpgem_kans), FUN = sum)
            df$stkpgem_waarde <- round(as.numeric(as.character(df$stkpgem_waarde)), dec)
            df$stkpgem_kans <- round(df$stkpgem_kans, dec)
            mtable <- gt(df) |> 
              tab_header(title = headlbl) |>
              cols_label(
                stkpgem_waarde = col1lbl,
                stkpgem_kans =col2lbl)   }
          mtable <- mtable |>
            tab_style(style = cell_text(align = "center"),
              locations = list( cells_column_labels(), cells_body() ) )
          mtable           
      } else {
         cat("alle kansen moeten strikt positief zijn met som = 1 \npas aan: pop_kans <- c(..., ..., ...)")  }      
     } else {
        cat("de populatiewaarden zijn niet uniek \npas aan: pop_waarde <- c(..., ..., ...)") } 
    } else {
       cat("het aantal bijhorende kansen is verschillend \nvan het aantal populatiewaarden . Pas aan: \npop_waarde <- c(..., ..., ...) en pop_kans <- c(..., ..., ...)")  }      
   } else {
      cat("vul het gewenste kansmodel in bij \nkansmod <-... (kies uit: 1, 2, 3 of 4)")  }        
  } else {
     cat("vul het gewenste aantal decimalen in bij \ndec <-... (kies uit: 1, 2, 3, 4, 5 of 6)")  }  
} 