[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