Explorando funções no R

Ir em baixo

Explorando funções no R

Mensagem por lipegui em Qua Nov 08, 2017 8:38 pm

Boa noite a todos. Nos meus estudos tenho feito uma dobradinha entre as aulas do prof. Marcos com outros materiais, disponíveis na internet. Um desses materiais é o disponível no site https://rpubs.com/EstatBasica/Introd. Em suma é uma aplicação do R nos dados de um livro famoso de estatística de dois professores de estatística da USP.

Estudando o Módulo 3 do curso de bioestatística no R, fui dar uma conferida no capítulo que fala de medidas-resumo (que fala de média, variância, etc) e me deparei com uma função que propõe uma espécie de função summary “turbinada”. Achei legal e resolvi reproduzir a função e testar para altura no seguinte conjunto de dados:

Área Amostra Nome Spp Altura_(m) Desenvolvimento Qualidade Coroamento Entrelinha
1 1 Caboatã Ca 0.8 Regular Boa Regular Regular
1 1 Bordão_de_velho Bo 0.76 Regular Boa Regular Regular
1 1 Quiri Qu 0.9 Regular Boa Regular Regular
1 1 Caboatã Ca 0.37 Ruim Ruim Regular Regular
1 1 Cupiúba Cu 1.00 Regular Boa Regular Regular
1 1 Falha Fa Regular Regular
1 1 Cupiúba Cu 1.9 Bom Regular Regular Regular
1 1 Pau_formiga Pf 1.05 Regular Boa Regular Regular
1 1 Salgueiro Sg 1.00 Regular Boa Regular Regular
1 1 Falha Fa Regular Regular
1 1 Algodão_da_praia Al 0.87 Regular Boa Regular Regular
1 1 Cupiúba Cu 0.15 Ruim Ruim Regular Regular
1 1 Leiteiro Le 1.5 Regular Boa Regular Regular
1 1 Ingá In 0.6 Ruim Boa Regular Regular
1 2 Leiteiro Le 0.64 Ruim Boa Regular Regular
1 2 Caboatã Ca 0.56 Ruim Boa Regular Regular
1 2 Ingá In 0.45 Ruim Boa Regular Regular
1 2 Martelo Mr 1.4 Regular Boa Regular Regular
1 2 Falha Fa Regular Regular
1 2 Oitizeiro Oi 0.6 Ruim Boa Regular Regular
1 2 Falha Fa Regular Regular
1 2 Falha Fa Regular Regular
1 2 Falha Fa Regular Regular
1 2 Pitanga Pt 0.45 Ruim Boa Regular Regular
1 2 Falha Fa Regular Regular
1 2 Falha Fa Regular Regular
1 2 Ipê_branco Ib 0.46 Ruim Boa Regular Regular
1 2 Quiri Qu 0.54 Ruim Boa Regular Regular
1 2 Pitanga Pt 0.4 Ruim Boa Regular Regular
1 2 Cupiúba Cu 1.6 Bom Boa Regular Regular
1 2 Ingá In 0.4 Ruim Regular Regular Regular
1 2 Cupiúba Cu 1.5 Regular Boa Regular Regular
1 2 Falha Fa Regular Regular
1 2 Visgueiro Vi 0.45 Ruim Regular Regular Regular
1 2 Falha Fa Regular Regular
1 2 Falha Fa Regular Regular
1 2 Falha Fa Regular Regular
1 3 Pau_formiga Pf 1.15 Regular Boa Regular Regular
1 3 Guanandi Ga 0.55 Ruim Boa Regular Regular
1 3 Cupiúba Cu 0.8 Regular Boa Regular Regular
1 3 Cupiúba Cu 0.35 Ruim Boa Regular Regular
1 3 Falha Fa Regular Regular
1 3 Algodão_da_praia Al 0.25 Ruim Boa Regular Regular
1 3 Falha Fa Regular Regular
1 3 Falha Fa Regular Regular
1 3 Cupiúba Cu 0.66 Ruim Boa Regular Regular
1 3 Falha Fa Regular Regular
1 3 Leiteiro Le 0.8 Regular Boa Regular Regular
1 3 Araticum Ar 0.9 Regular Boa Regular Regular
1 3 Cupiúba Cu 0.17 Ruim Regular Regular Regular
1 3 Araticum Ar 0.9 Regular Boa Regular Regular
1 3 Oitizeiro Oi 0.95 Regular Boa Regular Regular
1 3 Guanandi Ga 0.42 Ruim Boa Regular Regular
1 3 Algodão_da_praia Al 1.15 Regular Boa Regular Regular
1 3 Araticum Ar 0.9 Regular Boa Regular Regular
1 3 Araticum Ar 0.95 Regular Boa Regular Regular
1 3 Oitizeiro Oi 1.00 Regular Boa Regular Regular
1 3 Pau_formiga Pf 0.55 Ruim Regular Regular Regular
1 3 Araticum Ar 1.00 Regular Boa Regular Regular
1 3 Falha Fa Regular Regular
2 4 Oitizeiro Oi 0.9 Regular Boa Regular Ruim
2 4 Martelo Mr 0.73 Regular Boa Regular Ruim
2 4 Martelo Mr 0.72 Regular Boa Regular Ruim
2 4 Ipê_amarelo Ia 1.9 Bom Boa Regular Ruim
2 4 Oitizeiro Oi 1.15 Regular Boa Regular Ruim
2 4 Bordão_de_velho Bo 1.6 Bom Boa Regular Ruim
2 4 Jitó Ji 0.96 Regular Boa Regular Ruim
2 4 Oitizeiro Oi 1.26 Regular Boa Regular Ruim
2 4 Falha Fa Regular Ruim
2 4 Jitó Ji 1.08 Regular Boa Regular Ruim
2 4 Falha Fa Regular Ruim
2 4 Jenipapo Je 0.6 Ruim Boa Regular Ruim
2 4 Bordão_de_velho Bo 1.2 Regular Boa Regular Ruim
2 4 Favinha Fv 1.00 Regular Boa Regular Ruim
2 4 Bordão_de_velho Bo 0.65 Ruim Boa Regular Ruim
2 4 Pau_ferro Pi 2.6 Bom Boa Regular Ruim
2 4 Bordão_de_velho Bo 1.8 Bom Boa Regular Ruim
2 4 Martelo Mr 1.33 Regular Boa Regular Ruim
2 5 Ingá In 0.88 Regular Regular Regular Ruim
2 5 Falha Fa Regular Ruim
2 5 Ipê_branco Ib 0.99 Regular Boa Regular Ruim
2 5 Pau_ferro Pi 2.4 Bom Boa Regular Ruim
2 5 Embiriba Em 0.44 Ruim Regular Regular Ruim
2 5 Ipê_branco Ib 0.88 Regular Boa Regular Ruim
2 5 Martelo Mr 1.1 Regular Boa Regular Ruim
2 5 Ipê_branco Ib 1.82 Bom Boa Regular Ruim
2 5 Embiriba Em 0.49 Ruim Regular Regular Ruim
2 5 Pitanga Pt 0.2 Ruim Ruim Regular Ruim
2 5 Falha Fa Regular Ruim
2 5 Ipê_branco Ib 1.18 Regular Boa Regular Ruim
2 5 Ipê_roxo Ir 0.38 Ruim Regular Regular Ruim
2 5 Falha Fa Regular Ruim
2 5 Quiri Qu 1.07 Regular Boa Regular Ruim
2 5 Falha Fa Regular Ruim
2 5 Praíba Pr 0.3 Ruim Regular Regular Ruim
2 6 Ingá In 0.6 Ruim Regular Regular Ruim
2 6 Falha Fa Regular Ruim
2 6 Caboatã Ca 0.48 Ruim Boa Regular Ruim
2 6 Cajazeira Cj 0.64 Ruim Boa Regular Ruim
2 6 Falha Fa Regular Ruim
2 6 Falha Fa Regular Ruim
2 6 Ingá In 0.69 Ruim Regular Regular Ruim
2 6 Cupiúba Cu 0.69 Ruim Boa Regular Ruim
2 6 Quiri Qu 0.2 Ruim Regular Regular Ruim
2 6 Cupiúba Cu 1.6 Bom Regular Regular Ruim
2 6 Japaranduba Jp 0.4 Ruim Regular Regular Ruim
2 6 Ingá In 0.4 Ruim Boa Regular Ruim
2 6 Não_identificada Ni 1.18 Regular Boa Regular Ruim
2 6 Caboatã Ca 0.54 Ruim Boa Regular Ruim
2 6 Falha Fa Regular Ruim
2 6 Cajazeira Cj 0.6 Ruim Boa Regular Ruim
2 6 Cupiúba Cu 1.4 Regular Boa Regular Ruim
2 6 Ingá In 0.2 Ruim Boa Regular Ruim
2 6 Ingá In 0.67 Ruim Boa Regular Ruim
2 6 Cupiúba Cu 1.28 Regular Boa Regular Ruim
2 6 Trapiá Tr 1.25 Regular Boa Regular Ruim
2 6 Ingá In 0.6 Ruim Regular Regular Ruim
2 6 Cupiúba Cu 0.68 Ruim Regular Regular Ruim
2 6 Ingá In 0.87 Regular Boa Regular Ruim

Quando leio os dados no R, o espaço em branco ele interpreta como NA, na coluna referente a altura (m).

A função é a seguinte:

summary2<- function(x, limtrim=c(.01,.99), pop=FALSE, na.rm=TRUE,...) {
#pop: se TRUE, usa n no cálculo da variância
#pop: se FALSE usa n-1 no cálculo da variância
# limtrim: Limites para a média truncada
newdat<-matrix(NA, nrow=dim(as.matrix(x))[2], ncol=12)
x<-as.matrix(x)
newdat[,1]<-apply(x, 2, function(...){return(dim(x)[1])})
newdat[,2:7]<-t(apply(as.data.frame(x), 2, summary))
newdat[,8]<-apply(x, 2, function(...){
mean(x[x>quantile(x, probs=0.01) & x<quantile(x, probs=0.99)])
})
if(pop==TRUE & na.rm==TRUE){
n<-sum(!is.na(x))
newdat[,9]<-var(x, na.rm=na.rm)*(n-1)/n
}
else{
if(pop==TRUE & na.rm==FALSE){
n<-length(x, na.rm=na.rm)
newdat[,9]<-var(x)*(n-1)/n
}
else{
if(pop==FALSE & na.rm==TRUE){
n<-sum(!is.na(x))
newdat[,9]<-var(x, na.rm=na.rm)
}
else{
n<-length(x)
newdat[,9]<-var(x)
}
}
}
newdat[,1]<-n
newdat[,10]<-sqrt(newdat[,9])
newdat[,11]<-sqrt(newdat[,10]/newdat[,1])
colnames(newdat)<-c("N", "Min.","1st Qu.","Median","Mean","3rd Qu.",
"Max.","Tr Mean","Var","StDev","SE Mean")
return(t(newdat))
}

Executo a função e o R não dá nenhuma mensagem de erro. Mas quando rodo para a variável altura dos dados acima o R retorna a seguinte mensagem de erro:

Error in newdat[, 2:7] <- t(apply(as.data.frame(x), 2, summary)) :
number of items to replace is not a multiple of replacement length

Não faço a menor ideia do que isso representa. Alguém poderia me ajudar? Obrigado.
avatar
lipegui

Mensagens : 12
Data de inscrição : 03/10/2017

Ver perfil do usuário

Voltar ao Topo Ir em baixo

Voltar ao Topo

- Tópicos similares

 
Permissão deste fórum:
Você não pode responder aos tópicos neste fórum