Como eu retiro so os 3 primeiro caracteres dos objetos de um Vetor?

Ola: #Vamos supor que eu tenha um vetor: teste<-c("Stomoxys.calcitrans","Musca.domestica","Syritta.flaviventris") Eu gostaria de estrair so as 3 primeiras letras, pra ter um resultado [1] "Sto" "Mus" "Syr" Meu interesse é em usar esse segundo vetor extraido para plotar um grafico, mas os nomes de especies inteiro ficam muito grandes e fica muito poluido, mas se der pra extrair os nomes assim fica mais facil fazer o grafico ja que são muitos nomes e além do trabalho é perigoso errar ordem de especies e tal ou escrever errado. Então se alguem souber como fazer. Outra coisa não sei se é muito complicado, mas todo nome de especie é o "Genero.especie" Daria pra mim tirar a primeira letra do Genero, e a primeira e segunda letra da especies, pra ter um resultado do tipo: [1] "Sca" "Mdo" "Sfl" E por ultimo, se o vetor for mistura especies e familias tipo: teste2<-c("Stomoxys.calcitrans","Musca.domestica","Syritta.flaviventris","Clusiidae") Neste caso o ultimo termo é uma familia, então ele é uma palavra so, e nao ta no esquema "Genero.especie" Daria pra nele ficar so as 3 primeiras letra, e chegar a um resultado final assim: [1] "Sca" "Mdo" "Sfl" "Clu" PS: "Genero.especie" Ta com um ponto separando os 2 mesmo. Não é espaço não. -- Grato Augusto C. A. Ribas Site Pessoal: http://augustoribas.heliohost.org Lattes: http://lattes.cnpq.br/7355685961127056

substring(teste, 1, 3) [1] "Sto" "Mus" "Syr"
Em Ter, 2012-01-17 às 15:47 -0300, Augusto Ribas escreveu:
teste<-c("Stomoxys.calcitrans","Musca.domestica","Syritta.flaviventris") -- Paulo Justiniano Ribeiro Jr LEG (Laboratorio de Estatistica e Geoinformacao) Universidade Federal do Parana Caixa Postal 19.081 CEP 81.531-990 Curitiba, PR - Brasil Tel: (+55) 41 3361 3573 VOIP: (+55) (41) (3361 3600) 1053 1066 Fax: (+55) 41 3361 3141 e-mail: paulojus AT ufpr br http://www.leg.ufpr.br/~paulojus

Ops faltou a segunda parte
sapply(foo, function(x) paste(substring(x[1], 1,1), substring(x[2], 1,2), sep="")) [1] "Sca" "Mdo" "Sfl"
Em Ter, 2012-01-17 às 15:47 -0300, Augusto Ribas escreveu:
teste<-c("Stomoxys.calcitrans","Musca.domestica","Syritta.flaviventris") -- Paulo Justiniano Ribeiro Jr LEG (Laboratorio de Estatistica e Geoinformacao) Universidade Federal do Parana Caixa Postal 19.081 CEP 81.531-990 Curitiba, PR - Brasil Tel: (+55) 41 3361 3573 VOIP: (+55) (41) (3361 3600) 1053 1066 Fax: (+55) 41 3361 3141 e-mail: paulojus AT ufpr br http://www.leg.ufpr.br/~paulojus

Primeiro muito Obrigado professor, eu tava tentando olhar o help da função paste, mas nao tava dando conta :) teste2<-c("Stomoxys.calcitrans","Musca.domestica","Syritta.flaviventris","Clusiidae") E fazer esse aqui, fazer uma mistura dos 2 casos. Resultando em : [1] "Sca" "Mdo" "Sfl" "Clu" Em 17 de janeiro de 2012 16:00, Paulo J Ribeiro Jr <paulojus@leg.ufpr.br>escreveu:
Ops faltou a segunda parte
sapply(foo, function(x) paste(substring(x[1], 1,1), substring(x[2], 1,2), sep="")) [1] "Sca" "Mdo" "Sfl"
Em Ter, 2012-01-17 às 15:47 -0300, Augusto Ribas escreveu:
teste<-c("Stomoxys.calcitrans","Musca.domestica","Syritta.flaviventris") -- Paulo Justiniano Ribeiro Jr LEG (Laboratorio de Estatistica e Geoinformacao) Universidade Federal do Parana Caixa Postal 19.081 CEP 81.531-990 Curitiba, PR - Brasil Tel: (+55) 41 3361 3573 VOIP: (+55) (41) (3361 3600) 1053 1066 Fax: (+55) 41 3361 3141 e-mail: paulojus AT ufpr br http://www.leg.ufpr.br/~paulojus
_______________________________________________ R-br mailing list R-br@listas.c3sl.ufpr.br https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br Leia o guia de postagem (http://www.leg.ufpr.br/r-br-guia) e forneça código mínimo reproduzível.
-- Grato Augusto C. A. Ribas Site Pessoal: http://augustoribas.heliohost.org Lattes: http://lattes.cnpq.br/7355685961127056

Neste caso a sua funcao dentro do sapply() deve testar o tamanho do vetor. Se for tamanho 2 pega do genero e especie e se for de tamanho 1 pega as 3 letras mf <- function(x){ if(length(x) == 1) substring(x, 1,3) else paste(substring(x[1], 1,1), substring(x[2], 1,2), sep="") } teste2<-c("Stomoxys.calcitrans","Musca.domestica","Syritta.flaviventris","Clusiidae") foo <- strsplit(teste2, ".", fixed="TRUE") sapply(foo, mf) Funciona! Considere ainda adaptar a solucao do Benilton neste código Em Ter, 2012-01-17 às 16:03 -0300, Augusto Ribas escreveu:
Primeiro muito Obrigado professor, eu tava tentando olhar o help da função paste, mas nao tava dando conta :)
teste2<-c("Stomoxys.calcitrans","Musca.domestica","Syritta.flaviventris","Clusiidae")
E fazer esse aqui, fazer uma mistura dos 2 casos. Resultando em :
[1] "Sca" "Mdo" "Sfl" "Clu"
Em 17 de janeiro de 2012 16:00, Paulo J Ribeiro Jr <paulojus@leg.ufpr.br> escreveu: Ops faltou a segunda parte
> sapply(foo, function(x) paste(substring(x[1], 1,1), substring(x[2], 1,2), sep="")) [1] "Sca" "Mdo" "Sfl"
Em Ter, 2012-01-17 às 15:47 -0300, Augusto Ribas escreveu:
> teste<-c("Stomoxys.calcitrans","Musca.domestica","Syritta.flaviventris")
-- Paulo Justiniano Ribeiro Jr LEG (Laboratorio de Estatistica e Geoinformacao) Universidade Federal do Parana Caixa Postal 19.081 CEP 81.531-990 Curitiba, PR - Brasil Tel: (+55) 41 3361 3573 VOIP: (+55) (41) (3361 3600) 1053 1066 Fax: (+55) 41 3361 3141 e-mail: paulojus AT ufpr br http://www.leg.ufpr.br/~paulojus
_______________________________________________ R-br mailing list R-br@listas.c3sl.ufpr.br https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br Leia o guia de postagem (http://www.leg.ufpr.br/r-br-guia) e forneça código mínimo reproduzível.
-- Grato Augusto C. A. Ribas
Site Pessoal: http://augustoribas.heliohost.org Lattes: http://lattes.cnpq.br/7355685961127056
_______________________________________________ R-br mailing list R-br@listas.c3sl.ufpr.br https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br Leia o guia de postagem (http://www.leg.ufpr.br/r-br-guia) e forneça código mínimo reproduzível.
-- Paulo Justiniano Ribeiro Jr LEG (Laboratorio de Estatistica e Geoinformacao) Universidade Federal do Parana Caixa Postal 19.081 CEP 81.531-990 Curitiba, PR - Brasil Tel: (+55) 41 3361 3573 VOIP: (+55) (41) (3361 3600) 1053 1066 Fax: (+55) 41 3361 3141 e-mail: paulojus AT ufpr br http://www.leg.ufpr.br/~paulojus

Muito bom, muito obrigado pela ajuda. Ficou tudo perfeito :) Em 17 de janeiro de 2012 16:14, Paulo J Ribeiro Jr <paulojus@leg.ufpr.br>escreveu:
Neste caso a sua funcao dentro do sapply() deve testar o tamanho do vetor. Se for tamanho 2 pega do genero e especie e se for de tamanho 1 pega as 3 letras
mf <- function(x){ if(length(x) == 1) substring(x, 1,3) else paste(substring(x[1], 1,1), substring(x[2], 1,2), sep="") }
teste2<-c("Stomoxys.calcitrans","Musca.domestica","Syritta.flaviventris","Clusiidae") foo <- strsplit(teste2, ".", fixed="TRUE") sapply(foo, mf)
Funciona! Considere ainda adaptar a solucao do Benilton neste código
Em Ter, 2012-01-17 às 16:03 -0300, Augusto Ribas escreveu:
Primeiro muito Obrigado professor, eu tava tentando olhar o help da função paste, mas nao tava dando conta :)
teste2<-c("Stomoxys.calcitrans","Musca.domestica","Syritta.flaviventris","Clusiidae")
E fazer esse aqui, fazer uma mistura dos 2 casos. Resultando em :
[1] "Sca" "Mdo" "Sfl" "Clu"
Em 17 de janeiro de 2012 16:00, Paulo J Ribeiro Jr <paulojus@leg.ufpr.br> escreveu: Ops faltou a segunda parte
> sapply(foo, function(x) paste(substring(x[1], 1,1), substring(x[2], 1,2), sep="")) [1] "Sca" "Mdo" "Sfl"
Em Ter, 2012-01-17 às 15:47 -0300, Augusto Ribas escreveu:
>
teste<-c("Stomoxys.calcitrans","Musca.domestica","Syritta.flaviventris")
-- Paulo Justiniano Ribeiro Jr LEG (Laboratorio de Estatistica e Geoinformacao) Universidade Federal do Parana Caixa Postal 19.081 CEP 81.531-990 Curitiba, PR - Brasil Tel: (+55) 41 3361 3573 VOIP: (+55) (41) (3361 3600) 1053 1066 Fax: (+55) 41 3361 3141 e-mail: paulojus AT ufpr br http://www.leg.ufpr.br/~paulojus
_______________________________________________ R-br mailing list R-br@listas.c3sl.ufpr.br https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br Leia o guia de postagem (http://www.leg.ufpr.br/r-br-guia) e forneça código mínimo reproduzível.
-- Grato Augusto C. A. Ribas
Site Pessoal: http://augustoribas.heliohost.org Lattes: http://lattes.cnpq.br/7355685961127056
_______________________________________________ R-br mailing list R-br@listas.c3sl.ufpr.br https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br Leia o guia de postagem (http://www.leg.ufpr.br/r-br-guia) e forneça
código mínimo reproduzível.
-- Paulo Justiniano Ribeiro Jr LEG (Laboratorio de Estatistica e Geoinformacao) Universidade Federal do Parana Caixa Postal 19.081 CEP 81.531-990 Curitiba, PR - Brasil Tel: (+55) 41 3361 3573 VOIP: (+55) (41) (3361 3600) 1053 1066 Fax: (+55) 41 3361 3141 e-mail: paulojus AT ufpr br http://www.leg.ufpr.br/~paulojus
_______________________________________________ R-br mailing list R-br@listas.c3sl.ufpr.br https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br Leia o guia de postagem (http://www.leg.ufpr.br/r-br-guia) e forneça código mínimo reproduzível.
-- Grato Augusto C. A. Ribas Site Pessoal: http://augustoribas.heliohost.org Lattes: http://lattes.cnpq.br/7355685961127056

Parte 1) f = function(x) gsub('(\\w{1,3}).*', '\\1', x) f(teste) Parte 2) g = function(x) gsub('(\\w{1}).*\\.(\\w{1,2}).*', '\\1\\2', x) g(teste) Parte 3) f(g(teste2))
participantes (3)
-
Augusto Ribas
-
Benilton Carvalho
-
Paulo J Ribeiro Jr