[R-br] Loop para criar diferentes bancos de dados usando o mesmo script
barbaramnascimento em gmail.com
barbaramnascimento em gmail.com
Sex Jun 3 11:55:45 -03 2022
Oi Cesar!
Obrigada pela resposta!
Acho que agora entendi porque não dá certo. Eu não consegui escrever no script o que eu quero e ele entende como um vetor de caracteres.
Meu banco de dados é um arquivo csv com uma coluna com a identificação de animal e depois 19 colunas com notas para avaliação visual de 19 características.
Sdtypetrait é um vetor com o nome da coluna dessas características que eu quero chamar no código. Então minha ideia era que o código type13 <- subset(type12, sdtypetrait [index.typet] <= 50)
se transformasse em : type13 <- subset(type12, Stature <= 50)
Então no meu exemplo Stature é uma das notas que eu estou avaliando e eu usei o subset para ficar somente com animais com nota menor ou igual a 50. Provavelmente o que está acontecendo é que meu código indica que Stature é um valor e não uma coluna, como eu gostaria.
Como eu vou avaliar as características separadamente, eu preciso editar um banco individual para cada uma delas para não perder muitas informações sem necessidade.
Aproveitando a resposta, será que isso seria possível, chamar as colunas a partir de um vetor? Minha ideia era otimizar a criação dos bancos ao invés de editar ele várias vezes.
De qualquer forma, eu agradeço a ajuda! Pelo menos consegui enxergar onde está o problema =)
From: R-br <r-br-bounces em listas.c3sl.ufpr.br> On Behalf Of Cesar Rabak por (R-br)
Sent: quinta-feira, 2 de junho de 2022 18:54
To: a lista Brasileira oficial de discussão do programa R. <r-br em listas.c3sl.ufpr.br>
Cc: Cesar Rabak <cesar.rabak em gmail.com>
Subject: Re: [R-br] Loop para criar diferentes bancos de dados usando o mesmo script
Olá Bárbara,
Via de regra, no R raramente se necessita usar loops pela natureza da linguagem voltada a vetores.
Por outro lado, sua descrição, no texto, é contrária ao que vc parece desejar.
Me explico: a descrição do texto dá a impressão que já se dispõe de um banco com todas as informações (dezenove características e cinco idades). Não se menciona o formato ou onde reside o banco, mas em geral essas operações são feitas usando-se uma query (que no seu caso pode ser feita pelo comando subset [como se vê no s/script).
Olhando seu código a dúvida é a seguinte:
type13 <- subset(type12, sdtypetrait [index.typet] <= 50)
pela definição de sdtypetrait, mais acima, essa var é um vetor de cadeias de caracteres, o que vc espera ao fazer uma comparação com 50 ?
HTH
--
Cesar
On Thu, Jun 2, 2022 at 2:00 PM Bárbara Mazetti Nascimento por (R-br) <r-br em listas.c3sl.ufpr.br <mailto:r-br em listas.c3sl.ufpr.br> > wrote:
Boa tarde a todos!
Estou com dificuldade em gerar um loop e espero que alguém possa me ajudar aqui.
Estou trabalhando com dados de sobrevivência de animais até 5 idades determinadas e o efeito individual de 19 características dentro de um servidor. A partir de um banco inicial, eu preciso rodar o mesmo script para combinar todas as idades com todas as características, gerando 95 bancos de dados diferentes.
Até agora, eu consegui fazer 5 bancos relativos a cada idade através do commandArg:
#Loop ----------------------------------------------------------------------------------
## Level 1: DATE OF BIRTH ==> z
sdrumthreshold = c("2019-01-01", "2018-01-01", "2017-01-01", "2016-01-01", "2015-01-01")
### Level 2: SURVIVAL AGE ==> t
sdactthreshold = c(36, 48, 60, 72, 84)
## Connection with the code in Linux.
args = commandArgs(trailingOnly = TRUE)
index.sdrum = as.numeric(args[1])
index.sdact = as.numeric(args[2])
Quando eu chamo as variáveis dentro do loop no Linux, o script roda certinho. Segue como ilustração a forma como eu chamei o loop no Linux.
#!/bin/bash
sdrumth_leader=(1 2 3 4 5)
sdactth_leader=(1 2 3 4 5)
for z in "${sdrumth_leader[@]}"
do
for t in "${sdactth_leader[@]}"
do
if [[ "$z" != "$t" ]]
then
continue
else
sbatch Survival.Rcode.bash $z $t #calling indexes.
sleep 1
fi
done
done
Porém, tentei fazer a mesma coisa, criando um vetor com o nome das colunas e não tive sucesso:
### Level 3: TYPE TRAITS ==> q
sdtypetrait = c("Stature", "Strength", "FinalScore", "DairyForm", "RumpAngle", "RumpWidth", "RearLegs", "ForeUdder", "RearUdderHeight", "RearUdderWidth", "FootAngle", "UdderDepth", "UdderCleft", "TeatPlacement", "TeatLength", "RearTeatPlacementRv", "RearTeatPlacementSv", “Pasterns", "RearTeatLength")
## Connection with the code in Linux.
args = commandArgs(trailingOnly = TRUE)
index.sdrum = as.numeric(args[1])
index.sdact = as.numeric(args[2])
index.typet = as.numeric(args[3])
Quando eu chamo a variável dentro do script, ela vem com as aspas e dá erro. As entradas da variável do vetor são:
type13 <- subset(type12, sdtypetrait [index.typet] <= 50)
count(type13, sdtypetrait [index.typet])
model <- lm(formula = sdtypetrait [index.typet] ~ CalvingAge + I(CalvingAge^2) + appraisalDIM + I(appraisalDIM^2), data = type15)
dados_completo$sdtypetrait [index.typet]_adj <- dados_completo$residuals
dados_completo$sdtypetrait [index.typet]_adj2 <- (dados_completo$sdtypetrait [index.typet]_adj)*2
dados_usar <- select(dados_completo, RegId, SireRegId, DamRegId, CG, Cross, AFC, AFC2, Inbreeding, Inbreed2, sdtypetrait [index.typet]_adj, sdtypetrait [index.typet]_adj2, Survival)
write.table(dados_usar,
file = paste0("/teste/",
sdactthreshold[index.sdact],"/", sdtypetrait [index.typet],"/Survival.dat"),
sep = " ",
row.names = F,
quote = F,
col.names = F)
Será que alguém tem alguma ideia de como eu posso chamar a variável sem entrar as aspas, ou se a forma como estou rodando tem algum erro?
Obrigada!
____________________________________
Barbara Mazetti Nascimento
Postdoctoral Researcher
Department of Animal and Dairy Sciences
University of Wisconsin-Madison
_______________________________________________
R-br mailing list
R-br em listas.c3sl.ufpr.br <mailto: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/20220603/bab5d8a6/attachment.htm>
Mais detalhes sobre a lista de discussão R-br