[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