[R-br] Problemas para modificar vetor

Augusto Ribas ribas.aca em gmail.com
Quinta Março 29 17:02:13 BRT 2012


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
-------------- Próxima Parte ----------
Um anexo em HTML foi limpo...
URL: <http://listas.inf.ufpr.br/pipermail/r-br/attachments/20120329/dccfd5eb/attachment.html>


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