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