[R-br] sobre a utilização do paste para formar nomes de objetos

Walmes Zeviani walmeszeviani em gmail.com
Quinta Novembro 24 19:57:25 BRST 2016


Você pode usar o get().

m1 <- matrix(0, 3, 3)
m2 <- matrix(0, 3, 2)

# n <- paste0("m", 1:2)
n <- sprintf("m%d", 1:2)

get(n[1])
get(n[2])

lapply(n,
       FUN = function(obj) {
           dim(get(obj))
       })

À disposição.
Walmes.

========================================================================
Walmes Marques Zeviani
LEG - Laboratório de Estatística e Geoinformação [25.450418S 49.231759W]
Departamento de Estatística - Universidade Federal do Paraná
fone: (+55) 41 3361 3573                       linux user number: 531218
pages & profiles:
 http://www.leg.ufpr.br/~walmes | http://lattes.cnpq.br/4410617539281650
 http://git.leg.ufpr.br/walmes  | https://github.com/walmes
 https://www.mendeley.com/profiles/walmes-zeviani1/
========================================================================

2016-11-24 14:45 GMT-02:00 Antonio Silva via R-br <r-br em listas.c3sl.ufpr.br>
:

> Obrigado Cesar,
>
> Realmente ficou complicado. Veja o exemplo abaixo:
>
> dados1 <- c(1,2,3,4,5,6)
> dados2 <- c(3,4,5,6,7,8)
> dados3 <- c(5,6,7,8,9,10)
> dados4 <- c(7,8,9,10,11,12)
>
> t.test(dados1,dados3)
> t.test(dados1,dados4)
> t.test(dados2,dados3)
> t.test(dados2,dados4)
>
> # OK
>
> a <- 1
> b <- 2
>
> as.name(paste("dados",a,sep=""))
> as.name(paste("dados",b,sep=""))
>
> # parece OK
>
> for (a in 1:2) {
> for (b in 3:4) {
> t.test(
> as.name(paste("dados",a,sep="")),
> as.name(paste("dados",b,sep="")))
> }}
>
> # erro
>
> Há alguma forma de "montar" o nome dados1 e dados2 com paste (p.ex.) de
> forma que este nome possa ser usado em uma função e reconhecido como vetor
> (ou matriz)?
>
> Abraços
>
> Antônio Olinto
>
> Em 24 de novembro de 2016 12:00, Cesar Rabak <cesar.rabak em gmail.com>
> escreveu:
>
>> Antônio,
>>
>> *Acho* que não entendo sua dúvida e sua descrição do que você deseja
>> versus o que você tentou me parece confusa.
>>
>> para fazer a cadeia "matriz" ser concatenada com, digamos, 1 até 12, (o
>> seu "a in 1 to ..." onde o "to" seria em 12), basta apenas fazer o
>> seguinte:
>>
>> paste0("matriz",1:12)
>>
>> HTH
>> --
>> Cesar Rabak
>>
>> 2016-11-24 7:38 GMT-02:00 Antonio Silva via R-br <
>> r-br em listas.c3sl.ufpr.br>:
>>
>>> Olá a todos
>>>
>>> Quero fazer cálculos de íncides que utilizam duas matrizes. No total
>>> tenho mais que 100.
>>>
>>> matriz1 <- matrix(....
>>> matriz2 <- matrix(....
>>> matriz3 <- matrix(....
>>>
>>> ls()
>>> matriz1 matriz2 matriz3
>>>
>>> Tentei fazer um looping
>>>
>>> for (a in 1 to ...) {
>>> for (b in 1 to ...) {
>>> resp <- função(paste("matriz",a,sep=""),paste("matriz",b,sep=""))
>>> assing(paste("resp_",a,"_",b,sep=""),resp)
>>> }
>>> }
>>>
>>> No entanto as funções não reconhecem o resultado de
>>> paste("matriz",a,sep="") ou as.name(paste("matriz",a,sep="")) como o
>>> objeto matriz1, matriz2, etc.
>>>
>>> Alguém sabe uma forma de "montar" o nome de um objeto de forma que este
>>> seja reconhecido como tal?
>>>
>>> Obrigado
>>>
>>> Antônio Olinto
>>>
>>> _______________________________________________
>>> R-br mailing list
>>> R-br em 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.
>>>
>>
>>
>
>
> --
> Antônio Olinto Ávila da Silva
> Biólogo / Oceanógrafo
> Instituto de Pesca (Fisheries Institute)
> São Paulo, Brasil
>
> _______________________________________________
> R-br mailing list
> R-br em 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.
>
-------------- Próxima Parte ----------
Um anexo em HTML foi limpo...
URL: <http://listas.inf.ufpr.br/pipermail/r-br/attachments/20161124/79ffc254/attachment.html>


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