[R-br] Problemas para modificar vetor

Augusto Ribas ribas.aca em gmail.com
Quinta Março 29 18:16:30 BRT 2012


Consegui resolver:
O que queria era algo assim:

a<-length(unique(nomes.lin))

for(i in 1:a)
 {
  if (length(nomes.lin[which(nomes.lin==unique(nomes.lin)[i])])>1)
       {
       x<-length(nomes.lin[which(nomes.lin==unique(nomes.lin)[i])])
       y<-which(nomes.lin==unique(nomes.lin)[i])
        for (j in 1:x)
            {
             nomes.lin[y[j]]<-
             paste(nomes.lin[y[j]],j,sep="")
            }
       }
  }

Meu erro estava em ao invez de salvar aqueles valores em x e y que salvo,
deixava eles no meio do loop do j, ai nada funcionava.
Como coisas simples são tão complicadas :)

Em 29 de março de 2012 16:02, Augusto Ribas <ribas.aca em gmail.com> escreveu:

> Ola Pessoal, venho aqui pedir uma ajudinha.
> Eu tenho um conjunto de dados que são varios nomes de especies. Ai eu
> resumo eles em siglas para fazer um grafico.
> Com uma dica anterior do Benilton e do Paulo eu aprendi a resumir os nomes
> em 3 letras, a primeiro do genero e as duas primeira da especie.
> Meu problema é o seguinte eu tenho especies como:
> [1] "Aplectana crossodactyli" "Aplectana crucifer"
> Que as duas viram "Acr"
>
> O que eu gostaria de fazer é qd isso acontece, que são poucos casos dar o
> nome de Acr1 e Acr2, somente nesses casos.
>
> Seguem embaixo como estão os dados e como eu estava fazendo as coisas
>
> #dados
> nomes.lin<-c("Anuracanthorhynchus tritaxisentis", "Aplectana
> crossodactyli",
> "Aplectana crucifer", "Aplectana delirae", "Aplectana lopesi",
> "Aplectana membranosa", "Aplectana meridionalis", "Aplectana micropenis",
> "Aplectana pintoi", "Aplectana vellardi", "Capillaria recondita",
> "Catadiscus cohni", "Catadiscus cordeiroi", "Catadiscus inopinatus",
> "Catadiscus marinholutzi", "Catadiscus mirandai", "Catadiscus propinquus",
> "Catadiscus pygmaeus", "Catadiscus uruguayensis", "Centrorhynchus
> giganteus",
> "Centrorhynchus tumidulus", "cestoda não-identificado", "Choledocystus
> elegans",
> "Cosmocerca brasiliense", "Cosmocerca cruzi", "Cosmocerca freitasi",
> "Cosmocerca ornata", "Cosmocerca parva", "Cosmocerca podicipinus",
> "Cosmocerca rara", "Cosmocerca travassosi", "Cruzia tentaculata",
> "Cylindrotaenia americana", "Diplostomum compactum", "Falcaustra mascula",
> "Glypthelmins linguatula", "Glypthelmins palmipedis", "Glypthelmins
> parva",
> "Glypthelmins proximus", "Glypthelmins pseudium", "Glypthelmins repandum",
> "Glypthelmins simulans", "Glypthelmins vetelliniphilum", "Gorgoderina
> carioca",
> "Gorgoderina cedroi", "Gorgoderina cryptorchis", "Gorgoderina diaster",
> "Gorgoderina festoni", "Gorgoderina pigulevskyi", "Gorgodernina
> parvicava",
> "Gyrinicola chabaudi", "Haematoloechus freitasi", "Haematoloechus
> fuellborni",
> "Haematoloechus legrandi", "Haematoloechus lutzi", "Haematoloechus
> ozoroi",
> "Halipegus dubius", "Infindum infindum", "Maicuru solitarium",
> "Mesocoelium monas", "Mesocoelium travassosi", "Monostoma sulcatum",
> "Neohaematoloechus iturbei", "Neohaematoloechus neivai", "Ochoterenella
> convoluta",
> "Ochoterenella digiticauda", "Opistogliphe amplicavus", "Oswaldocruzia
> belenensis",
> "Oswaldocruzia lopesi", "Oswaldocruzia mazzai", "Oswaldocruzia proencai",
> "Oswaldocruzia subauricularis", "Oswaldocruzia vaucheri", "Oxyascaris
> oxyascaris",
> "Oxysomatium baylisi", "Paraoxyascaris travassosi", "Parapharyngodon
> alvarengai",
> "Physaloptera retusa", "Physalopteroides venancioi", "Plagiorchis lenti",
> "Plagiorchis rangeli", "Polystoma lopezromani", "Pseudoacanthocephalus
> lutzi",
> "Pteroxyascaris caudacutus", "Pteroxyascaris similis", "Raillietnema
> minor",
> "Raillietnema simples", "Raillietnema spectans", "Rhabdias androgyna",
> "Rhabdias elegans", "Rhabdias fuelleborni", "Rhabdias hermafrodita",
> "Rhabdias sphaerocephala", "Rudolphitrema rudolphi", "Schrankiana
> formosula",
> "Schrankiana freitasi", "Schrankiana fuscus", "Schrankiana inconspicata",
> "Schrankiana larvata", "Schrankiana schranki", "Schrankianella brasili",
> "Schulzia subventricosa", "Schulzia travassosi", "Strongyloides carinii",
> "Strongyloides pereirai", "Subulascaris falcaustriformis", "Thelandros
> owaldocruzia",
> "Travtrema stenocotyle")
>
> #fazendo siglas
> nomes.lin<-rownames(as.data.frame(matriz.final2))
> for(i in 1:length(rownames(matriz.final2))) {
>       nomes.lin[i]<-paste(substring(strsplit(nomes.lin[i]," ",
> fixed="TRUE")[[1]][1], 1,1),
>                           substring(strsplit(nomes.lin[i]," ",
> fixed="TRUE")[[1]][2], 1,2),
>                           sep="")
>       }
>
> #ai o problema é assim:
> #no caso do Acr
>
> length(nomes.lin[which(nomes.lin==unique(nomes.lin)[2])])>1
>
> #ele ocorre mais de uma vez, então qd isso for verdadeiro
> #tinha que virar Acr1 e Acr2
> #então esses objetos
>
> which(nomes.lin==unique(nomes.lin)[2])
>
> #que são iguais tinha que virar o Acr1 e Acr2
>
>
> Eu tava tentando fazer algo tipo um loop pra testar cada situação unica,
> igual acima, se ela fosse verdadeira, ai eu tentei fazer um outro loop
> dentro pra ver qts casos era e ir adicionando 1 2 3 do lado da sigla
> Mas entrou em loop dentro de loop e me embananei todo :(
> Alguém poderia dar uma mão?
>
> --
> Grato
> Augusto C. A. Ribas
>
> Site Pessoal: http://augustoribas.heliohost.org
> Lattes: http://lattes.cnpq.br/7355685961127056
>
>


-- 
Grato
Augusto C. A. Ribas

Site Pessoal: http://augustoribas.heliohost.org
Lattes: http://lattes.cnpq.br/7355685961127056
-------------- Próxima Parte ----------
Um anexo em HTML foi limpo...
URL: <http://listas.inf.ufpr.br/pipermail/r-br/attachments/20120329/3bcef7ab/attachment.html>


Mais detalhes sobre a lista de discussão R-br