Ordenamento de matriz by colnames e by rownames

Caros, Fiz: n<-14 pv<-matrix(nrow=(n),ncol=(n)) # estimo valores para pv[i,j], que, obrigatoriamente, seguem a seguinte ordem de entrada na matriz pv rn<-c("SSRY_027","SSRY_021","SSRY_141","SSRY_008","SSRY_185","SSRY_324","SSRY_040","SSRY_035","SSRY_235","SSRY_183","SSRY_043","GA_005","GA_136","GA_012") colnames(pv)<-rn rownames(pv)=<-rn # esta matriz de p-valor é simétrica e tem 1.00 na diagonal principal # Necessito gerar a pvC, com pv sorteada para rownames e colnames. Consequentemente esta matriz também é simétrica, com 1.00 na diagonal principal sort(rn) "GA_005" "GA_012" "GA_136" "SSRY_008", "SSRY_021", "SSRY_027" "SSRY_035" "SSRY_040" "SSRY_043", "SSRY_141" "SSRY_183" "SSRY_185" "SSRY_235" "SSRY_324 # Não consegui utilizar o comando 'order' para fazer isto. Luiz Roberto. Luiz Roberto Martins Pinto Prof. Pleno/DCET/UESC Laboratório de Estatística Computacional Universidade Estadual de Santa Cruz Ilhéus-Bahia-Brasil luizroberto.uesc@gmail.com skype: lrmpinto http://lattes.cnpq.br/2732314327604831

O problema é sort() e ordem() ordenam um vetor, olham para uma dimensão. Você não pode sisplesmente usar order() nas linhas e depois nas colunas porque se fizer isso vai bagungar com as ligações fora da diagonal. Então a tarefa é mais complicada porque você tem que ordenar as linhas e colunas sem estragar a estrutura de p-valores. Uma vez eu, uns 5 anos atrás, eu fiz uma função para ordenar uma matriz de contrastes. Tinha na diagonal a média de cada tratamento, na diagonal de cima o contraste entre duas médias e na debaixo o p-valor do teste de hipótese sobre o contraste. Levei dias para construir e não consegui. Meu código se perdeu. Lembro que eu resolvi mudando a ordem dos níveis do fator antes de começar a análise, ao invés de ser alfabética, eu ordenei pela média amostral (ou média ajustada de uma análise). Walmes.

Walmes, Agradeço as suas considerações. Depois que enviei a mensagem, consegui resolver o problema da seguinte forma: n=14 pv<-matrix(nrow=(n),ncol=(n)) # estimo valores para pv[i,j], que, obrigatoriamente, seguem a seguinte ordem de entrada na matriz pv # esta matriz de p-valor é simétrica e tem 1.00 na diagonal principal rn=c("SSRY_027","SSRY_021","SSRY_141","SSRY_008","SSRY_185","SSRY_324","SSRY_040","SSRY_035","SSRY_235","SSRY_183","SSRY_043","GA_005","GA_136","GA_012") colnames(pv)=rn rownames(pv)=rn ### passo-a-passo pv0=(pv[,order(rownames(pv))]) tpv0=t(pv0) pv2=tpv0[,order(colnames(tpv0))] pv2 tem o formato que desejo. Abraços, Luiz Roberto. Luiz Roberto Martins Pinto Prof. Pleno/DCET/UESC Laboratório de Estatística Computacional Universidade Estadual de Santa Cruz Ilhéus-Bahia-Brasil luizroberto.uesc@gmail.com skype: lrmpinto http://lattes.cnpq.br/2732314327604831 Em 17 de agosto de 2015 16:40, Walmes Zeviani <walmeszeviani@gmail.com> escreveu:
O problema é sort() e ordem() ordenam um vetor, olham para uma dimensão. Você não pode sisplesmente usar order() nas linhas e depois nas colunas porque se fizer isso vai bagungar com as ligações fora da diagonal. Então a tarefa é mais complicada porque você tem que ordenar as linhas e colunas sem estragar a estrutura de p-valores. Uma vez eu, uns 5 anos atrás, eu fiz uma função para ordenar uma matriz de contrastes. Tinha na diagonal a média de cada tratamento, na diagonal de cima o contraste entre duas médias e na debaixo o p-valor do teste de hipótese sobre o contraste. Levei dias para construir e não consegui. Meu código se perdeu. Lembro que eu resolvi mudando a ordem dos níveis do fator antes de começar a análise, ao invés de ser alfabética, eu ordenei pela média amostral (ou média ajustada de uma análise).
Walmes.
_______________________________________________ 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.
participantes (2)
-
Luiz Roberto Martins Pinto
-
Walmes Zeviani