if (dim(sk1$out$Result)[2] == 5) {
  grupos <- c(sk1$out$Result$G1,
              sk1$out$Result$G2,
              sk1$out$Result$G3,
              sk1$out$Result$G4)
} else if (dim(sk1$out$Result)[2] == 4) {
  grupos <- c(sk1$out$Result$G1,
              sk1$out$Result$G2,
              sk1$out$Result$G3)
} else if (dim(sk1$out$Result)[2] == 3) {
  grupos <- c(sk1$out$Result$G1,
              sk1$out$Result$G2)
} else {
  grupos <- sk1$out$Result$G1
}

grupos

rm(grupos)

library(dplyr)

grupos <- case_when(
  dim(sk1$out$Result)[2] == 5 ~ list(c(sk1$out$Result$G1,
                                       sk1$out$Result$G2,
                                       sk1$out$Result$G3,
                                       sk1$out$Result$G4)),
  dim(sk1$out$Result)[2] == 4 ~ list(c(sk1$out$Result$G1,
                                       sk1$out$Result$G2,
                                       sk1$out$Result$G3)),
  dim(sk1$out$Result)[2] == 3 ~ list(c(sk1$out$Result$G1,
                                       sk1$out$Result$G2)),
  TRUE ~ list(sk1$out$Result$G1)
)

grupos <- unlist(grupos)  

rm(grupos)


num_grupos <- min(dim(sk1$out$Result)[2], 10)

# Criar dinamicamente a lista de grupos
grupos <- unlist(lapply(1:num_grupos, function(i) sk1$out$Result[[paste0('G', i)]]))

grupos

Cid Edson Mendonça Póvoas
Agrônomo - Data Analyst - Crop Protection & Seeds
Tel: +55 73 99151-9565


Em ter., 15 de out. de 2024 às 12:56, Maurício Lordêlo por (R-br) <r-br@listas.c3sl.ufpr.br> escreveu:
#Olá,
#saudações a tod@s!!!
#Vou precisar várias comparações múltiplas usando o
#teste de Scott Knott
#Quero no final, capturar as letras e formar um único vetor

#No exemplo abaixo, só serão formados dois "grupos"
#Porém pode acontecer de formar um, três ou quatro
#Não acontecerá de cinco ou mais

#Usei o "ifelse" para isso, porém o retorno é um
#vetor de tamanho 1
library(ScottKnott)
data(RCBD)
sk1 <- with(RCBD,
            SK(y ~ blk + tra,
               data=dfm,
               which='tra'))
sk1$out$Result   #aqui eu verifico a formação de dois grupos

#O objeto que vai ser gerado no final, deveria ser igual a este
#aqui
grupos = c(sk1$out$Result$G1,
                  sk1$out$Result$G2)
grupos[nzchar(grupos)]

#Porém, isso não acontece quando eu uso o "ifelse"
rm(grupos)
grupos = ifelse(dim(sk1$out$Result)[2] == 5, c(sk1$out$Result$G1,
                                               sk1$out$Result$G2,
                                               sk1$out$Result$G3,
                                               sk1$out$Result$G4),
            ifelse(dim(sk1$out$Result)[2] == 4, c(sk1$out$Result$G1,
                                                  sk1$out$Result$G2,
                                                  sk1$out$Result$G3),
                   ifelse(dim(sk1$out$Result)[2] == 3, c(sk1$out$Result$G1,
                                                         sk1$out$Result$G2),
                          sk1$out$Result$G1)))
grupos

#O que há de errado?
_______________________________________________
R-br mailing list
R-br@listas.c3sl.ufpr.br
https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br
Leia o guia de postagem (http://www.leg.ufpr.br/r-br-guia) e forneça código mínimo reproduzível.