sobre a utilização do paste para formar nomes de objetos

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

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@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@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.

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@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@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@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

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@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@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@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@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@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.
participantes (3)
-
Antonio Silva
-
Cesar Rabak
-
Walmes Zeviani