[R-br] Pre-tratamento de dados/Trabalhando com matrizes
Rubem Kaipper Ceratti
rubem_ceratti em yahoo.com.br
Quarta Junho 20 12:45:40 BRT 2012
Tales,
De forma geral, quando você quer executar uma tarefa que deve ser repetida sob uma certa estrutura, isso pode ser feito via o comando 'for'. Por exemplo:
# "Imprimir" números de 1 a 5:
for(indice in 1:5){
print(indice)
}
No seu caso, se vc tem uma matriz da qual deve ser extraído, p. ex., o valor mínimo de cada coluna:
# Semente para gerar o mesmo conjunto de valores aleatórios
set.seed(646332)
# Gerando uma matriz 10x5 para exemplo
a<-matrix(rnorm(5*10),10,5)
a
# Extraíndo o mínimo de cada coluna via 'for'
nc<-ncol(a) # Número de colunas da matriz 'a'
teste<-vector('numeric',nc) # Criando um vetor numérico de comprimento 'nc'
for(i in 1:nc){
teste[i]<-min(a[,i])
}
E para gerar a matriz Mmin do seu código:
nr<-nrow(a) # número de linhas de 'a'
matrix(teste,nrow=nr,ncol=nc,byrow=T) # matriz Mmin de dimemsão 'nr' por 'nc'
No R, uma alternativa nesse caso é a função apply(), que aplica uma determinada função especificada às linhas ou colunas:
# Aplicando uma função a todas as colunas com a função apply()
teste.1<-apply(a,MARGIN=2,FUN=min) # Função 'min' aplicada às colunas (MARGIN=2) de 'a'
teste.1
matrix(teste.1,10,5,byrow=T)
Com isso, acho que já dá para facilitar a sua vida. Entretanto, reforço o que já foi dito: Sempre que for postar solicitando ajuda, se coloque no lugar de quem vai ler sobre a sua dúvida pela primeira vez e dê uma descrição breve do problema, acompanhado de um código (minimamente legível e sucinto) que o reproduza.
Att.,
Rubem
-------------- Próxima Parte ----------
Um anexo em HTML foi limpo...
URL: <http://listas.inf.ufpr.br/pipermail/r-br/attachments/20120620/c3475309/attachment.html>
Mais detalhes sobre a lista de discussão R-br