====== Natália Targhetta ====== {{:bie5782:01_curso_atual:alunos:trabalho_final:natalia.targhetta:img_20160109_120829972.jpg?200|}} Mestre em Ecologia pelo Instituto Nacional de Pesquisas da Amazônia (INPA), atualmente trabalha como técnica de laboratório no Departamento de Ecologia do IB-USP. [[.:Exercícios]] ===== Propostas Trabalho Final ===== ==== Proposta A: Trabalhando com banco de dados. ==== === Contextualização: === Atualmente, muitos pesquisadores na área da Ecologia Vegetal têm trabalhado com banco de dados, compilando informações sobre espécies ou grupos de espécies de plantas. O trabalho com banco de dados tem suas vantagens: na maioria das vezes, não é necessário saídas a campo e a obtenção da informação é, em um primeiro momento, rápida. No entanto, trabalhar as informações obtidas de bancos de dados pode demandar bastante tempo, uma vez que os diferentes bancos retornam informações de diferentes maneiras e é preciso organizá-las para que se consiga implementar as análises necessárias e extrair a informação desejada. Um dos muitos usos que se pode fazer das informações fornecidas pelos bancos de dados é a modelagem da distribuição geográfica das espécies, que utiliza a informação fornecida pelos bancos de dados (ocorrência das espécies, coordenadas geográficas), atrelada a dados locais de altitude e variáveis climáticas, tais como as fornecidas pelo GoogleEarth e WorldClim/BioClim, principais fontes utilizadas para a obtenção das variáveis abióticas. A função tem como objetivo organizar a informação dos bancos de dados mais utilizados para obter informação de espécies de plantas, especialmente as tropicais/neotropicais (GBIF, SpeciesLink, NYH). A função irá organizar as informações de modo que, ao final, estejam alocadas na mesma coluna, em uma única tabela. A função pode remover informação duplicada (com base em alguns critérios) e poderá obter as altitudes e variáveis climáticas dos pontos de ocorrência da espécie. === Função: === Entrada: plantbase (dados=c(“GBIF”, “SpLink”, “NYH”), rep, alt, bioclim) === Argumentos: === * dados = arquivos dos bancos de dados (class: data frame) * GBIF = arquivo do GBIF * SpLink = arquivo do SpeciesLink * NYH = arquivo do New York Botanical Garden Herbarium * rep = retira repetições (class logical: TRUE/FALSE) * alt = busca altitude no Google Earth (class logical: TRUE/FALSE) * bioclim = busca variáveis climáticas do bioclim (class logical: TRUE/FALSE) === Verificação dos Parâmetros: === * dados é um data frame? Se não for retorna “não é um data frame”. * dados = GBIF e/ou SpLink e/ou NYH? Se não for retorna “dados precisam ser GBIF e/ou SpLink e/ou NYH”. * rep não é lógico (TRUE ou FALSE)? Se não for retorna “necessita argumento lógico: TRUE ou FALSE”. * alt não é lógico (TRUE ou FALSE)? Se não for retorna “necessita argumento lógico: TRUE ou FALSE”. * bioclim não é lógico (TRUE ou FALSE)? Se não for retorna “necessita argumento lógico: TRUE ou FALSE”. === Pseudo-Código: === 1. Preenche células vazias com NA. 2. Reorganiza/redefine as colunas de cada objeto (GBIF, SpLink, NYH). 3. Cria um novo objeto da classe data frame resultante da junção dos objetos anteriores. 4. Se rep = TRUE, verifica linhas com informação repetida. A. Cria um ciclo para verificar repetição nas linhas referentes às seguintes informações das colunas: número de tombo no herbário, nome do coletor, número de coleta, data da coleta, localidade da coleta. A.1. Se informações das cinco colunas são iguais: deixa a linha do primeiro objeto inserido no argumento da função e exclui a(s) outra(s) linha(s). A.2. Se informações são iguais em quatro das cinco colunas: deixa a linha do primeiro objeto inserido no argumento da função e exclui a(s) outra(s) linha(s). A.3. Se informações são iguais em três das cinco colunas: retorna mensagem de aviso “checar dados das linhas”. A.4. Se informações são iguais em duas das cinco colunas: retorna mensagem de aviso “checar dados das linhas”. 5. Se alt = TRUE, abre o aplicativo Google Earth. A. Busca altitude para cada linha se coordenadas geográficas são fornecidas. B. Cria nova coluna no objeto e coloca o valor da altitude na linha correspondente. 6. Se bioclim = TRUE, instala e abre o pacote dismo. A. Chama a função “biovars” do pacote dismo. B. Aplica a função para cada linha se coordenadas geográficas são fornecidas. C. Cria colunas no objeto e coloca os valores das variáveis ambientais. 7. Salva o objeto no diretório de trabalho. === Saída: === Um data frame com colunas reorganizadas e valores de altitude e variáveis climáticas. ==== Proposta B: Uma ajuda para quem necessita de uma dieta restritiva ==== === Contextualização: === Muitas pessoas necessitam de dietas restritivas devido ao surgimento de doenças ao longo de suas vidas, tais como o diabetes, que atualmente atinge cerca de 425 milhões de pessoas em todo o mundo (1). Uma das formas de controlar os níveis sanguíneos de glicemia é através da ingestão controlada de carboidratos (2). Sabendo a quantidade de carboidratos ingeridos, torna-se mais fácil ajustar a dose da medicação, e até mesmo interromper ou retardar o seu uso em alguns casos. A quantidade de carboidratos que podem ser ingeridos diariamente varia de pessoa para pessoa, e até mesmo em uma mesma pessoa ao longo do tempo. No que diz respeito à quantidade de carboidratos ingeridos, as dietas podem ser classificadas da seguinte maneira (2): 1. Dieta cetogênica de muito baixo carboidrato: 20-50 g/dia ou < 20% de uma dieta de 2000 kcal/dia; 2. Dieta de baixo carboidrato: < 130 g/dia ou < 26% de uma dieta de 2000 kcal/dia; 3. Dieta de ingestão moderada de carboidratos: de 26% a 40% do total de uma dieta de 2000 kcal/dia; 4. Dieta de alta ingestão de carboidratos: > 45% do total de uma dieta de 2000 kcal/dia. A função tem como objetivo calcular as quantidades/porções de alimentos de acordo com a quantidade de carboidratos escolhida, podendo ser separado por classes de alimentos, que podem ser escolhidos pelo usuário ou por sorteio pela função. === Função: === Entrada: carb.control (alimentos = c(vetor com alimentos escolhidos), g, ref = c(“cf”, ”al”, ”jn”, ”todos”), sort, info=c(vetor com alimentos escolhidos)) === Argumentos: === * alimentos = alimentos escolhidos de acordo com a tabela da função (ver help) (class: vector). Classificados nos seguintes grupos: proteínas, legumes, verduras, frutas, cereais, massas, laticínios, oleaginosas, doces. * g = quantidade de carboidratos em gramas (class: integer). * ref = tipo de refeição, podendo escolher entre um, dois ou todos os tipos (cf, al, jn, todos). * cf = café, al = almoço, jn = jantar * sort = sorteia alimentos e calcula respectivas quantidades (class logical: TRUE ou FALSE). * info = informação sobre a quantidade de carboidratos no alimento contida na tabela de alimentos da função (class: vector). === Verificação dos Parâmetros: === * alimentos ≠ dos listados na tabela da função? Se sim, retorna “alimento não contido na tabela!”. * ref = (“todos”) ou (“cf”, “al”, “jn”) e g < 20? Se sim, retorna “quantidade mínima de carboidratos ingeridos deve ser de 20 g por dia!”. * sort é TRUE ou FALSE? Se não for retorna “sort deve ser TRUE ou FALSE!”. * sort = TRUE e alimentos = (vetor com alimentos escolhidos)? Se sim, retorna “se deseja escolher seus alimentos, sort = FALSE”). === Pseudo-Código: === 1. Se alimentos = (vetor com alimentos escolhidos), faz um sorteio e gera um data frame com as quantidades dos alimentos escolhidos. A. Quantidades de alimentos dos grupos “proteínas”, “verduras”, “legumes”, “frutas” e “cereais” devem ser maiores do que quantidades de alimentos dos outros grupos. B. Quantidade de carboidratos não deve ter diferença maior do que 20% entre grupos. 2. Se sort = TRUE, faz um sorteio dos alimentos e suas respectivas quantidades. A. Se ref = “cf”, sorteia e calcula quantidades de alimentos das classes “laticínios”, “pães”, “frutas”, “oleaginosas”. B. Se ref = “al” e/ou “jn”, sorteia e calcula quantidades de alimentos das classes “proteínas”, “verduras”, “legumes”, “cereais” ou “massa”. C. Se ref = “todos”, pode sortear e calcular quantidades de todas as classes de alimentos, exceto “doces”. 3. se info = (vetor com nomes dos alimentos), retorna a informação da quantidade de carboidratos em uma porção determinada do alimento. === Saída: === Um data frame com o tipo de refeição e seus alimentos com quantidades/porções que somam a quantidade de carboidrato escolhida. == Referências: == 1. IDF Diabetes Atlas 2017. 2. Feinman et al. 2015. Dietary carbohydrate restriction as the first approach in diabetes management: Critical review and evidence base. Nutrition, 31:1-13. ===== Comentários Julia ===== **PROPOSTA A** Oi Natália, Achei a proposta A bem clara e factível. Dois comentários: 1) Como as coordenadas geográficas são fornecidas nos bancos de dados? Todas no mesmo formato e DATUM? Sugiro checar isso e se for o caso incluir comandos para corrigir caso as coordenadas possam ser imcompatíveis entre sí e com o google earth. 2) Você já tem familiaridade em extrair os dados do google earth ? Sei que o pacote geonames têm uma função para elevação, caso ajude. E também a função elevation https://www.rdocumentation.org/packages/rgbif/versions/0.9.9/topics/elevation **PROPOSTA B** Proposta B também é factível. Achei interessante a ideia, me parece mais simples que a proposta A mas pode se tornar mais complexa e um ótimo caminho e criativo. 1)Fiquei com uma dúvida, você diz que "podendo ser separado por classes de alimentos, que podem ser escolhidos pelo usuário ou por sorteio pela função." Não sei se entendi bem, a função irá utilizar ou as informaçoes em "info" ou irá sortear alimentos dentro das classes contidas em "alimentos" , é isso? 2)Se estiver inspirada, sua função poderia também interagir com páginas na internet sobre alimentos. Olha só isso: Using R to Analyze Food Blogs - DataScience.com- https://www.datascience.com/blog/analyzing-food-blogs-with-r Achei curioso. Caso sinta-se segura, isso pode dar ideias de como tornar a função mais complexa. Recomendo buscar desafios para obter uma ótima função (e avaliação) mas vamos conversando para manter dentro do plano factível para você. Então considere esse tutorial como uma inspiração. **Considerações finais** Acho as duas propostas factíveis e interessantes. Leve em consideração os comentários e sugiro escolher uma e seguir. Ao fazer alterações na sua proposta, inclua aqui a nova proposta atualizada. (Não apague a antiga). Estou à disposição caso fique com dúvidas : ) Beijos, Julia ===== Coment. Natália ===== Oi Júlia! Muito obrigada pelos comentários! Ainda não bati o martelo, mas estou considerando um pouco mais a proposta B. Em relação aos seus comentários sobre ela, 1) a função utilizará somente a informação (da quantidade de carboidratos) contida na tabela que estará dentro da própria função. O usuário poderá descrever os itens que deseja consumir ou pedir pra função sorteá-los. Portanto, os alimentos escolhidos ou sorteados terão que estar descritos na tabela/inseridos na função. Caso contrário a função retornaria um aviso. O argumento info somente seria utilizado caso o usuário queira obter a informação de determinado alimento (p. ex. info=c("farelo de aveia","arroz branco"). A função retorna na tabela/data frame farelo de aveia = 1 colher de sopa = 4 g de carboidratos, arroz branco = 1 colher de sopa = 5 g de carboidratos. Apenas como informação para o usuário. 2) Achei bem bacana a ideia da função interagir com outras páginas da internet também, mas confesso que fico na dúvida por causa da complexidade... Também não sei como inserir a interação na minha função, talvez interagindo com páginas específicas de grupos específicos sobre diabetes e/ou com receitas para esse fim. Você pensou algo assim também? Vou pensar melhor e tentar decidir o quanto antes. ===== Comentários Julia 16/05 ===== Oi Natalia, Como você disse que está tendendo para a Proposta B fiquei pensando em como te ajudar para tornar mais complexa, mas sem ficar impossível. De acordo com sua criatividade você pode utilizar outras ideias para tornar a função mais flexível e incluir ciclos nela. Se optar por incluir a parte da receita da internet, escrevi um pseudo-tutorial que pode te ajudar. Não é um código, afinal você que terá que produzi-lo, mas te mostra um caminho a se seguir, acho que pode dar uma luz. Veja se ajuda e conforme for produzindo explore os blogs e também nos escreva se precisar! É importante que você tome uma decisão final e comunique o quanto antes junto de sua proposta final. Chame ela de proposta C e poste aqui, por favor. OK?! --------- ###### DICAS##### rm(list=ls()) ####1 LER página thepage1=readLines("http://www.diabetesevoce.com.br/blog/category/receitas/") ##AQUI VOCÊ TERÁ QUE ESCREVER O CÓDIGO PARA LER TODAS AS PÁGINAS DE RECEITAS DO SITE, SÃO 13 PÁGINAS. PODE FAZER ISSO DE MODO AUTOMÁTICO OU MANUAL. ####2 Procurar por uma receita com o alimento escolhido. Exemplo: chocolate. #NO CASO DE SUA FUNÇÃO VOCÊ TERÁ QUE UTILIZAR O ARGUMENTO FORNECIDO PELO USUÁRIO. pesquisa=grep("Chocolate", thepage1) pesquisa thepage1[707] thepage1[520] #Neste site o alimento poderá aparecer como parte do título (707) da receita ou como item nos ingredientes (520). Acho que para tornar viável, sugiro utilizar somente receitas em que o alimento esteja no título, ou seja que ele seja o protagonista. #### 3 Sendo assim, aqui você teria que incluir uma parte de código para considerar somente o item que contém o alimento no título. No caso, seria thepage1[707] . #Uma dica seria você checar se nesse string que a pesquisa retorna existe "http" no meio. Se houver, será o título, pois o título é um link. Se não houver será parte do texto de ingredientes. # A mesma estrutura de código você pode usar para outras páginas de receitas. E dependendo da página você pode facilitar seu código. Uma sugestão é pesquisar as páginas na internet e ver uma que possua um formato mais simples, mas com variedade de receitas. Eu coloquei essa nesse exemplo pois achei mais fácil de lidar. Mas utilize essa ou outra que você se sentir mais a vontade. #### 4 Agora você pode retirar o texto que será o endereço para a página da receita desejada. #No nosso caso: thepage1[707] #Queremos retirar todo o conteúdo que começa com http e que vai até /\" #Isto é, precisamos retirar a parte : "http://www.diabetesevoce.com.br/blog/sorvete-chocolate/\" #Se você prestar atenção, esse é um padrão de critério que vale para todos os links de receitas. #Exemplo 2: pesquisa2=grep("Morango", thepage1) pesquisa2 thepage1[672] #Precisamos retirar : "http://www.diabetesevoce.com.br/blog/pave-de-morango/\" #Se tiver dificuldade aqui, nos escreva. Mas existem muitos tutoriais nos StackOverflow e em outros blogs ensinando como cortar string de acordo com um padrão no início e um padrão no final. ### 5 Uma vez feito isso, você pode salvar esse pedaço do texto, em um objeto (character). E então pode utiliza-lo para a função abrir a página dessa receita para o usuário: #No caso do exemplo ficaria assim: browseURL(seu objeto , encodeIfNeeded = FALSE) #Que na prática significa: browseURL("http://www.diabetesevoce.com.br/blog/sorvete-chocolate", encodeIfNeeded = FALSE) ####################################### === Comentário Natália 19/05 === Oi Júlia! Vamos lá, vou fazer a proposta B! Achei um bom complicador a questão de buscar a receita no site (minha primeira impressão, confesso), mas vou tentar incluir isso na minha função. Não tinha entendido o por quê de [707] e [520] e isso tinha me confundido, mas pelo o que entendi depois de rodar o código essas são as linhas/posição em que aparece o nome do alimento na página, no caso "chocolate", é isso mesmo? No meu caso, quando busco pelo nome do objeto (pesquisa) aparecem os números 707, 715, 723, 731, mas não 520 como no seu exemplo... Um complicador seria quando aparecer o mesmo alimento em dois títulos na mesma página, como "sorvete", por exemplo, que aparece em duas receitas. Daí talvez utilizar "http" também ajudaria, só preciso ver como agora! Volto a escrever no caso de dúvidas (que com certeza terei)! Segue abaixo a proposta. Obrigada de novo! ########################################### ==== Proposta C - Uma ajuda para quem necessita de uma dieta restritiva ==== === Contextualização: === Muitas pessoas necessitam de dietas restritivas devido ao surgimento de doenças ao longo de suas vidas, tais como o diabetes, que atualmente atinge cerca de 425 milhões de pessoas em todo o mundo (1). Uma das formas de controlar os níveis sanguíneos de glicemia é através da ingestão controlada de carboidratos (2). Sabendo a quantidade de carboidratos ingeridos, torna-se mais fácil ajustar a dose da medicação, e até mesmo interromper ou retardar o seu uso em alguns casos. A quantidade de carboidratos que podem ser ingeridos diariamente varia de pessoa para pessoa, e até mesmo em uma mesma pessoa ao longo do tempo. No que diz respeito à quantidade de carboidratos ingeridos, as dietas podem ser classificadas da seguinte maneira (2): 1. Dieta cetogênica de muito baixo carboidrato: 20-50 g/dia ou < 20% de uma dieta de 2000 kcal/dia; 2. Dieta de baixo carboidrato: < 130 g/dia ou < 26% de uma dieta de 2000 kcal/dia; 3. Dieta de ingestão moderada de carboidratos: de 26% a 40% do total de uma dieta de 2000 kcal/dia; 4. Dieta de alta ingestão de carboidratos: > 45% do total de uma dieta de 2000 kcal/dia. A função tem como objetivo calcular as quantidades/porções de alimentos de acordo com a quantidade de carboidratos escolhida, podendo ser separado por classes de alimentos, que podem ser escolhidos pelo usuário ou por sorteio pela função. === Função: === Entrada: caRb (alimentos = c(vetor com alimentos escolhidos), g, ref = c(“cf”, ”al”, ”jn”, ”todos”), sort, info=c(vetor com alimentos escolhidos),receita) === Argumentos: === * alimentos = alimentos escolhidos de acordo com a tabela da função (ver help) (class: vector). Classificados nos seguintes grupos: proteínas, legumes, verduras, frutas, cereais, massas, laticínios, oleaginosas, doces. * g = quantidade de carboidratos em gramas (class: integer). * ref = tipo de refeição, podendo escolher entre um, dois ou todos os tipos (cf, al, jn, todos). * cf = café, al = almoço, jn = jantar * sort = sorteia alimentos e calcula respectivas quantidades (class logical: TRUE ou FALSE). * info = informação sobre a quantidade de carboidratos no alimento contida na tabela de alimentos da função (class: vector). * receita = busca na página da internet receita(s) que contenha o alimento em seu título (class: character). === Verificação dos Parâmetros: === * alimentos ≠ dos listados na tabela da função? Se sim, retorna “alimento não contido na tabela!”. * ref = (“todos”) ou (“cf”, “al”, “jn”) e g < 20? Se sim, retorna “quantidade mínima de carboidratos ingeridos deve ser de 20 g por dia!”. * sort é TRUE ou FALSE? Se não for retorna “sort deve ser TRUE ou FALSE!”. * sort = TRUE e alimentos = (vetor com alimentos escolhidos)? Se sim, retorna “se deseja escolher seus alimentos, sort = FALSE”). * receita contém alimento que não está listado nos títulos da página? Retorna “alimento não encontrado!” === Pseudo-Código: === 1. Se alimentos = (vetor com alimentos escolhidos), faz um sorteio e gera um data frame com as quantidades dos alimentos escolhidos. * A. Quantidades de alimentos dos grupos “proteínas”, “verduras”, “legumes”, “frutas” e “cereais” devem ser maiores do que quantidades de alimentos dos outros grupos. * B. Quantidade de carboidratos não deve ter diferença maior do que 20% entre grupos. 2. Se sort = TRUE, faz um sorteio dos alimentos e suas respectivas quantidades. * A. Se ref = “cf”, sorteia e calcula quantidades de alimentos das classes “laticínios”, “pães”, “frutas”, “oleaginosas”. * B. Se ref = “al” e/ou “jn”, sorteia e calcula quantidades de alimentos das classes “proteínas”, “verduras”, “legumes”, “cereais” ou “massa”. * C. Se ref = “todos”, pode sortear e calcular quantidades de todas as classes de alimentos, exceto “doces”. 3. se info = (vetor com nomes dos alimentos), retorna a informação da quantidade de carboidratos em uma porção determinada do alimento. 4. se receita = (character), retorna a(s) receita(s) cujo alimento escolhido encontra-se no título. === Saída: === Um data frame com o tipo de refeição e seus alimentos com quantidades/porções que somam a quantidade de carboidrato escolhida, podendo retornar receitas com o alimento escolhido. == Referências: == 1. IDF Diabetes Atlas 2017. 2. Feinman et al. 2015. Dietary carbohydrate restriction as the first approach in diabetes management: Critical review and evidence base. Nutrition, 31:1-13. ------ ====Comentários Julia ==== Oi Natália, Se você conseguir incluir a busca na internet ficará legal. Ou se pensar em outra ideia, na verdade a ideia da internet surgiu mais como uma opção para tornar a função mais complexa. Mas se não, está bem. A proposta C ficou bem clara e vejo que você já esta com o código caminhando. A ideia é que a função exija um pouco de complexidade e esforço, mas não que se torne algo fora dos limites do que você julgar viável. 1. Sim, o [707] era a posição da palavra referente ao alimento. Achei curioso aparecer em outra posição para você, eu rodei em dois navegadores diferentes. Mas siga conforme rodar no seu computador. Se quiser compartilhe seu código comigo. Deixei meu e-mail no final da msg. 2. Sobre a leitura de dados no site, no caso de ter duas receitas, acho que você poderia fazer o código para utilizar somente a primeira opção que aparecer. Já seria ótimo. Qualquer coisa meu e-mail é juliambmolina@gmail.com Bjs! --------- === Comentários sobre a função === Por diversos motivos (que fugiram um pouco do meu alcance) não consegui colocar a interação com paginas da internet, como havia conversado com a Julia. Acredito que se houvesse um pouco mais de tempo (que foi o meu principal empecilho) eu conseguiria incluir esse argumento na função. De resto, tentei seguir ao máximo o que propus desde o inicio. O argumento sort foi excluido, uma vez que percebi que se a pessoa escolher o alimento que deseja não faria sentido a função sortear os alimentos também. === Código da função === ##Função caRb caRb<-function(alimento=TRUE, g, ref=FALSE) #definir argumentos da função { if(missing(g)) #conferir se argumento g (quantidade de carboidrato) foi colocado na função {stop("definir quantidade de carboidrato!")} #se não foi, para e retorna um aviso if(class(g) != "numeric") #conferir se g é da classe numérica {stop("g deve ser numérico ou inteiro!")} #se não for, para e retorna um aviso if(g > 225) # se o valor de g > 225 warning("Cuidado! Quantidade de carboidratos muito alta!") #retorna um aviso, mas não para a função if(g < 10) #se valor de g < 10 warning("Atenção! Quantidade de carboidrato baixa!") #retorna um aviso, mas não para a função if(class(alimento) == "character" & ref == "café") #se usuário escolher alimentos e tipo de refeição {stop("Escolha o alimento ou o tipo de refeição!")} #para e retorna um aviso if (class(alimento) == "character" & ref == "almoço") #se usuário escolher alimentos e tipo de refeição {stop("Escolha o alimento ou o tipo de refeição!")} #para e retorna um aviso if(class(alimento) == "character" & ref == "almoço veg") #se usuário escolher alimentos e tipo de refeição {stop("Escolha o alimento ou o tipo de refeição!")} #para e retorna um aviso if(class(alimento) == "character" & ref == "janta") #se usuário escolher alimentos e tipo de refeição {stop("Escolha o alimento ou o tipo de refeição!")} #para e retorna um aviso if(class(alimento) == "character" & ref == "janta veg") #se usuário escolher alimentos e tipo de refeição {stop("Escolha o alimento ou o tipo de refeição!")} #para e retorna um aviso #inserir vetores com os nomes dos alimentos, unidades de medida, peso, quantidade de carboidrato e classe dos alimentos, #que em seguida serão transformados em um data frame. { #vetor com nomes dos alimentos Alimento=c("abacate","abacaxi","abacaxi em calda","abóbora","abobrinha","açaí com guaraná","acarajé","acerola","açúcar refinado","água de coco","alcachofra","alfajor","almôndega","ameixa seca", "ameixa vermelha","amendoim caramelizado","amendoim torrado com sal","amora","arroz branco","arroz-doce","arroz integral","aveia em flocos","banana-maçã","banana-ouro", "banana-prata","banana à milanesa","banana-passa","batata cozida","batata assada","batata frita","batata-doce assada","batata-doce cozida","batata-doce frita","beijinho","beterraba cozida","bife à milanesa","biscoito água e sal", "biscoito aveia e mel","biscoito champanhe","biscoito de coco","biscoito cream cracker","biscoito de polvilho","biscoito maizena","Passatempo recheado","Passatempo sem recheio", "biscoito recheado","rosquinha de coco","biscoito wafer","bolinho de arroz frito","bolinha de queijo","bolinho de bacalhau","bobó de camarão","bolo com glacê","bolo de banana","bolo de cenoura", "bolo de fubá","bolo de milho","bolo de tapioca","bolo de chocolate","brigadeiro","broa de fubá","broa de milho","cacau em pó","café sem açúcar","caju","cajuzinho","caldo-de-cana","canjica", "caqui","carambola(s)","castanha de caju","castanha da amazônia","castanha portuguesa","ketchup","cenoura cozida","granola","cerveja","chá sem açúcar","champanhe","chantili","chocolate em pó", "chocolate Alpino","chocolate ao leite","chocolate ao leite diet","chocolate Batom","chocolate Bis","chocolate Charge","chocolate Chokito","chocolate Confete","chocolate Crunch","chocolate Diamante Negro", "chocolate Galak","chocolate Kinder Ovo","chocolate meio amargo","chocolate Milkbar","chocolate Nescau","chocolate Prestígio","chocolate Sensação","chocolate Serenata de Amor","chocolate Sonho de Valsa", "chocolate Stickadinho","chocolate Suflair","chocolate Talento","chocolate Talento diet","chocolate Twix","chocotone","chuchu cozido","coalhada","cocada","coco ralado","couve-flor à milanesa", "couve-flor cozida","couve refogada","coxinha","creme de espinafre","creme de leite","creme de milho","croissant","croquete","curau","cuscuz paulista","damasco seco","doce de abóbora com coco", "doce de batata-doce","doce de coco","doce de goiaba","doce de leite","doce de mamão","empada","empadão","enrolado de salsicha","ervilha enlata(s)da","ervilha torta cozida","esfiha de carne", "esfiha de queijo","farelo de aveia","farelo de trigo","farinha de arroz","farinha láctea","farinha de mandioca","farinha de milho","farinha de rosca","farinha de trigo","fécula de batata", "feijão branco cozido","feijão cozido","figo","figo cristalizado","figo em calda","figo seco","filé à milanesa","pinha","frutas cristalizadas","fubá","Gatorade","gelatina diet","gelatina", "geleia de amora","geleia de damasco","geleia de framboesa","gemada","goiaba","goiabada","goiabada light","grão-de-bico cozido","homus","iogurte com frutas","iogurte com frutas light", "iogurte com mel","Danette","Danoninho","iogurte natural desnatado","iogurte natural integral","jabuticaba","jaca","jiló cozido","Karo","kibe assado","kibe cru","kibe frito","kiwi","laranja", "laranja-lima","lasanha à bolonhesa","leite de cabra","leite de coco","leite condensado","leite condensado light","leite de soja integral","leite de soja light","leite de vaca desnatado", "leite de vaca integral","leite de vaca semidesnatado","lentilha cozida","limão","maçã","macarrão cozido","maisena","mamão formosa","mamão papaia","mandioca cozida","mandioca frita","inhame cozido", "mandioquinha","manga","manjar","maracujá","maria-mole","marmelada","marshmallow","massa de pastel","mel","melancia","melão","merengue","milho cozido","milho verde enlata(s)do","milk-shake de chocolate", "mini pizza","miojo","misto-quente","morango","musse de chocolate","musse de maracujá","Mucilon de arroz","Mucilon de milho","nabo cozido","nectarina","achocolata(s)do em pó light","achocolata(s)do em pó", "nêspera","Neston aveia","Neston vitamina","nhoque","nozes","nuggets de frango","nuggets de peixe","nuggets de legumes","Nutella","olho-de-sogra","ovinhos de amendoim","paçoca","palmito em conserva", "pamonha","panetone","panqueca de carne","panqueca de frango","pão baguete","pão ciabatta","pão de batata","pão de centeio","pão de forma","pão de forma light","pão de hamburguer", "pão de cachorro quente","pão de leite","pão de mel","pão de milho","pão de queijo","pão doce recheado","pão doce simples","pão francês","pão italiano","pão sírio","pão sovado","pastel assado", "pastel de feira","pastel português","pavê de chocolate","pavê de nozes","pé-de-moleque","pepino","pêra","pêssego","pêssego em calda","pimentão cozido","pinhão cozido","pipoca","pirão de farinha de mandioca", "pirulito","pitanga","pizza","polenta","polvilho","pudim de leite condensado","pudim de pão com passas","purê de batata","queijadinha de coco","quiabo cozido","quiche de queijo","quindim","rabanada", "rabanete cru","rapadura","ravioli","refrigerante","risole","risoto de frango","risoto milanês","romã","sagu em vinho","salada de frutas","salpicão de frango","salsichão","sanduíche natural","sequilho", "shoyu","soja cozida","sopa creme de cebola(s)","sopa creme de cogumelo","sopa creme de espinafre","sopa creme de palmito","sopa de ervilha","sopa de feijão","sopa de frango","sopa de legumes com carne", "sopa de lentilha","sopa de macarrão","sorvete de massa","sorvete de massa light","picolé de brigadeiro","picolé de chocolate","picolé de coco","picolé de frutas","frozen yogurt","frozen yogurt diet", "suco de abacaxi sem açúcar","suco de acerola sem açúcar","suco de caju sem açúcar","suco de laranja sem açúcar","suco de maçã sem açúcar","suco de melancia sem açúcar","suco de morango sem açúcar", "suco de pêssego sem açúcar","suco de tomate","suco de uva","suflê de espinafre","suflê de legumes","suflê de queijo","sushi","suspiro","tabule","tangerina","tapioca","tomate","torrada", "trigo cozido","torta de liquidificador","torta de morango","tutu de feijão","uva","uva itália","uva passa","vagem cozida","vatapá","Yakult") #vetor com os números das unidades de medida. numero_medida<-c(1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1/2,1, 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1/2,1,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1) #vetor com as unidades de medida. medida<-c("colher(es) de sopa","fatia(s) média(s)","fatia(s) média(s)","colher(es) de sopa","colher(es) de sopa","porção(es)","unidade(s) média(s)","unidade(s) média(s)","colher(es) de sopa","copo(s)","unidade(s)","unidade(s)","unidade(s) média(s)","unidade(s) média(s)", "unidade(s) média(s)","pacote(s)","colher(es) de sopa","unidade(s) média(s)","colher(es) de sopa","colher(es) de sopa","colher(es) de sopa","colher(es) de sopa","unidade(s) média(s)","unidade(s) média(s)","unidade(s) média(s)","unidade(s) média(s)", "unidade(s)","colher(es) de sopa","colher(es) de sopa","colher(es) de sopa","colher(es) de sopa","colher(es) de sopa","fatia(s) pequena(s)","unidade(s)","colher(es) de sopa","unidade(s) média(s)","unidade(s)","unidade(s)","unidade(s)","unidade(s)","unidade(s)", "unidade(s)","unidade(s)","unidade(s)","unidade(s)","unidade(s)","unidade(s)","unidade(s)","unidade(s) média(s)","unidade(s) pequena(s)","unidade(s) grande(s)","colher(es) de sopa","fatia(s) média(s)","fatia(s) média(s)","fatia(s) média(s)","fatia(s) média(s)","fatia(s) média(s)", "fatia(s) média(s)","fatia(s) média(s)","unidade(s) média(s)","fatia(s) média(s)","fatia(s) média(s)","colher(es) de sopa","copo(s)","unidade(s) média(s)","unidade(s) média(s)","copo(s)","colher(es) de sopa","unidade(s) pequena(s)","unidade(s) média(s)","unidade(s)","unidade(s)", "unidade(s)","colher(es) de sopa","colher(es) de sopa","xícara(s) de chá","lata(s)","xícara(s) de chá","taça(s)","colher(es) de sopa","colher(es) de sopa","unidade(s)","unidade(s)","unidade(s)","unidade(s)","unidade(s)","unidade(s)","unidade(s)","porção(es)", "unidade(s)","unidade(s)","unidade(s)","unidade(s)","unidade(s)","unidade(s)","unidade(s)","unidade(s)","unidade(s)","unidade(s)","unidade(s)","unidade(s)","unidade(s)","unidade(s)","unidade(s)","unidade(s)","fatia(s) média(s)","colher(es) de sopa", "colher(es) de sopa","unidade(s) média(s)","colher(es) de sopa","ramo(s) médio(s)","ramo(s) médio(s)","colher(es) de sopa","unidade(s) média(s)","colher(es) de sopa","colher(es) de sopa","colher(es) de sopa","unidade(s) média(s)","unidade(s) grande(s)","porção(es) pequena(s)", "fatia(s) média(s)","unidade(s)","colher(es) de sopa","colher(es) de sopa","colher(es) de sopa","colher(es) de sopa","colher(es) de sopa","colher(es) de sopa","unidade(s) média(s)","fatia(s) média(s)","unidade(s) média(s)","colher(es) de sopa","colher(es) de sopa", "unidade(s) média(s)","unidade(s) média(s)","colher(es) de sopa","colher(es) de sopa","colher(es) de sopa","colher(es) de sopa","colher(es) de sopa","colher(es) de sopa","colher(es) de sopa","colher(es) de sopa","colher(es) de sopa","colher(es) de sopa","colher(es) de sopa", "unidade(s) grande(s)","unidade(s) média(s)","unidade(s) média(s)","unidade(s) média(s)","filé médio","unidade(s) média(s)","colher(es) de sopa","colher(es) de sopa","copo(s)","porção(es)","porção(es)","colher(es) de sopa","colher(es) de sopa","colher(es) de sopa", "colher(es) de sopa","unidade(s) média(s)","fatia(s) pequena(s)","fatia(s) pequena(s)","colher(es) de sopa","colher(es) de sopa","unidade(s)","unidade(s)","copo(s)","potinho","unidade(s)","copo(s)","copo(s)","unidade(s)","bago(s)","colher(es) de sopa","colher(es) de sopa", "porção(es)","porção(es)","unidade(s) média(s)","unidade(s) média(s)","unidade(s) média(s)","unidade(s) média(s)","pedaço(s) médio(s)","copo(s)","copo(s)","colher(es) de sopa","colher(es) de sopa","copo(s)","copo(s)","copo(s)","copo(s)","copo(s)","colher(es) de sopa","colher(es) de sopa","unidade(s) média(s)", "pegador(es)","colher(es) de sopa","fatia(s) média(s)","unidade(s) média(s)","colher(es) de sopa","pedaço(s) médio(s)","colher(es) de sopa","colher(es) de sopa","unidade(s) média(s)","porção(es)","unidade(s) média(s)","porção(es)","fatia(s) pequena(s)","colher(es) de sopa", "unidade(s) média(s)","colher(es) de sopa","fatia(s) média(s)","fatia(s) média(s)","colher(es) de sopa","espiga(s) grande(s)","colher(es) de sopa","copo(s) grande(s)","unidade(s) média(s)","pacote(s)","unidade(s)","unidade(s) média(s)","colher(es) de sopa","colher(es) de sopa","colher(es) de sopa", "colher(es) de sopa","colher(es) de sopa","unidade(s) média(s)","colher(es) de sopa","colher(es) de sopa","unidade(s) grande(s)","colher(es) de sopa","colher(es) de sopa","escumadeira(s)","unidade(s) média(s)","unidade(s)","unidade(s)","unidade(s)","colher(es) de sopa", "unidade(s) média(s)","porção(es)","unidade(s)","colher(es) de sopa","unidade(s)","fatia(s) pequena(s)","unidade(s)","unidade(s)","unidade(s) média(s)","unidade(s) média(s)","unidade(s) média(s)","fatia(s)","fatia(s)","fatia(s)","unidade(s)","unidade(s)","unidade(s)","unidade(s) pequena(s)","fatia(s)", "unidade(s) média(s)","unidade(s)","unidade(s)","unidade(s)","fatia(s) média(s)","unidade(s) média(s)","fatia(s)","unidade(s) média(s)","unidade(s)","unidade(s) média(s)","colher(es) de sopa","colher(es) de sopa","unidade(s) média(s)","colher(es) de sopa", "unidade(s) média(s)","unidade(s) média(s)","colher(es) de sopa","colher(es) de sopa","unidade(s)","saco médio","colher(es) de sopa","unidade(s)","unidade(s)","fatia(s) média(s)","colher(es) de sopa","colher(es) de sopa","fatia(s) média(s)","fatia(s) média(s)","colher(es) de sopa", "unidade(s) média(s)","colher(es) de sopa","unidade(s) média(s)","unidade(s) média(s)","unidade(s) média(s)","colher(es) de sopa","pedaço(s) médio(s)","escumadeira(s)","copo(s)","unidade(s) média(s)","colher(es) de sopa","colher(es) de sopa","unidade(s) média(s)","colher(es) de sopa", "colher(es) de sopa","colher(es) de sopa","unidade(s) média(s)","unidade(s) média(s)","unidade(s) pequena(s)","colher(es) de sopa","colher(es) de sopa","concha(s) média(s)","concha(s) média(s)","concha(s) média(s)","concha(s) média(s)","concha(s) média(s)","concha(s) média(s)","concha(s) média(s)", "concha(s) média(s)","concha(s) média(s)","concha(s) média(s)","bola(s)","bola(s)","unidade(s)","unidade(s)","unidade(s)","unidade(s)","porção(es)","porção(es)","copo(s)","copo(s)","copo(s)","copo(s)","copo(s)","copo(s)","copo(s)","copo(s)","copo(s)","copo(s)","colher(es) de sopa", "colher(es) de sopa","pedaço(s) médio(s)","unidade(s) média(s)","unidade(s) média(s)","colher(es) de sopa","unidade(s) média(s)","colher(es) de sopa","fatia(s) média(s)","unidade(s)","colher(es) de sopa","fatia(s) pequena(s)","fatia(s) pequena(s)","colher(es) de sopa","gomo(s)","gomo(s)", "colher(es) de sopa","colher(es) de sopa","unidade(s)","unidade(s)") #vetor com os pesos equivalentes às unidades de medida. unidade<-c(45,75,75,36,30,200,100,12,15,200,100,50,30,5,16,20,17,8,20,40,20,15,65,40,40,45,17,30,30,30,42,42,30,15,20,80,8,8,8,8,7,3,5,15,6,13,10,10,40,10,60,28,60,70,60,60,60,80,60,15,60,60,16,50,50,15,200,25,85,60,2.5,6,10,15,25,40,350, 200,100,15,15,13,30,30,16,7,40,32,30,24,30,30,20,50,28,40,33,38,20,21,12,50,25,25,16,40,20,20,70,9,90,60,20,50,35,15,35,40,55,100,100,7,40,40,50,50,40,50,55,110,27,30,25,60,60,9,9,17,20,16,15,15,20,15,17,17,70,55,50,28,120,60, 20,20,200,25,25,20,17,17,15,170,40,40,22,30,200,200,185,110,45,185,185,5,12,60,15,50,50,50,76,180,90,190,200,240,15,15,200,200,240,240,240,18,15,100,110,20,170,155,30,120,30,15,140,90,45,44,40,40,17,15,200,100,25,100,24,300, 100,90,85,12,30,30,9,9,35,100,16,25,40,20,20,100,5,23,23,23,25,20,30,30,15,100,40,60,60,100,50,50,25,25,25,70,58,50,15,50,20,70,50,50,50,60,40,25,100,35,37,37,20,18,110,60,30,13,10,20,30,5,15,120,15,16,80,80,30,35,40,138,35,60, 35,55,50,200,35,25,25,50,20,38,25,100,120,3,12,17,130,130,130,130,130,130,130,130,130,130,100,100,65,65,65,65,200,200,200,200,200,200,200,200,200,200,200,200,55,55,90,22,10,40,135,35,15,8,25,30,60,35,8,8,18,20,100,80) #vetor com as quantidades de carboidrato equivalentes às unidades de medida. carboidrato<-c(3,10,22,2,1,35,23,1,15,10,11,33,1,2,2,15,3,1,5,13,3,9,17,9,9,11,14,6,6,6,10,10,18,8,2,6,5,5,6,6,5,2,4,10,4,8,6,7,15,3,14,6,37,33,38,25,33,48,30,9,30,30,3,0,5,7,40,5,17,5,1,1,5,5,3,32,13,0,12,2,7,8,17,16,9,5,24,25,24,14,19,15,11,28,19, 23,22,7,12,13,8,30,13,12,9,23,2,1,37,1,11,3,2,18,4,0.5,26,19,21,16,23,4,18,24,29,21,22,28,18,37,3,3,4,23,15,4,5,14,15,14,12,11,15,12,4,3,11,41,20,18,8,15,16,15,12,0,3,11,11,12,5,19,26,5,5,14,31,11,31,25,9,12,12,0.6,2,5,11,8,9,11, 11,20,9,30,10,7,8,9,7,1,12,12,12,3,1,15,24,16,14,13,9,29,9,3,24,21,10,26,30,30,5,12,12,7,23,28,5,60,27,59,29,1,9,10,8,8,2,12,13,21,4,15,18,21,1,3,4,7,3,10,13,20,0.5,32,22,9,9,57,24,29,15,14,11,40,31,30,10,29,7,30,28,28,28,34,23,10, 30,10,7,14,14,1,16,7,6,0.5,0.6,11,9,5,1,24,8,14,21,22,5,17,3,37,14,21,1,48,20,22,10,6,7,8,18,5,2,3,29,2,1,2,6,12,5,11,20,18,3,8,16,20,23,22,19,19,16,15,61,24,10,5,3,22,19,12,8,8,8,30,1,5,5,15,9,7,15,29,1,5,6,10,22,6,1,1,13,2,9,13) #vetor com as classes dos respectivos alimentos Classe<-c("fruta","fruta","doce","vegetal","vegetal","doce","outro","fruta","doce","bebida","vegetal","doce","proteina","seca","fruta","doce", "outro","fruta","cereal","doce","cereal","cereal.matinal","fruta","fruta","fruta","outro","doce","vegetal","vegetal","outro", "vegetal","vegetal","outro","doce", "vegetal","proteina","biscoito","biscoito","biscoito","biscoito","biscoito","biscoito", "biscoito","biscoito","biscoito","biscoito","biscoito","biscoito","salgado","salgado","salgado","prato","doce","doce","doce", "doce","doce","doce","doce","doce","doce","doce","outro","bebida","fruta","doce","bebida","doce","fruta","fruta","castanha", "castanha","castanha","tempero","vegetal","cereal.matinal","bebida.alcool","bebida","bebida.alcool","doce","doce","doce","doce", "doce","doce","doce","doce","doce","doce","doce","doce","doce","doce","doce","doce","doce","doce","doce","doce","doce","doce", "doce","doce","doce","doce","doce","vegetal","laticinio","doce","fruta","vegetal","vegetal","vegetal","salgado","prato","laticinio", "prato","pao","salgado","doce","prato","seca","doce","doce","doce","doce","doce","doce","salgado","salgado","salgado","leguminosa", "vegetal","salgado","salgado","cereal.matinal","farinha","farinha","farinha","farinha","farinha","farinha","farinha","farinha", "leguminosa","leguminosa","fruta","doce","doce","seca","proteina","fruta","seca","farinha","bebida","doce","doce","doce","doce", "doce","bebida","fruta","doce","doce","leguminosa","prato","laticinio","laticinio","laticinio","laticinio","laticinio","laticinio", "laticinio","fruta","fruta","vegetal","adocante","prato","prato","salgado","fruta","fruta","fruta","prato","laticinio","outro", "doce","doce","bebida","bebida","laticinio","laticinio","laticinio","leguminosa","fruta","fruta","prato","farinha","fruta","fruta", "vegetal","outro","vegetal","vegetal","fruta","doce","fruta","doce","doce","doce","salgado","adocante","fruta","fruta","doce", "vegetal","vegetal","doce","salgado","outro","salgado","fruta","doce","doce","farinha","farinha","vegetal","fruta","outro","outro", "fruta","farinha","farinha","prato","castanha","outro","outro","outro","doce","doce","salgado","doce","vegetal","doce","doce","prato", "prato","pao","pao","pao","pao","pao","pao","pao","pao","pao","doce","pao","salgado","doce","doce","pao","pao","pao","pao","salgado", "salgado","doce","doce","doce","doce","vegetal","fruta","fruta","doce","vegetal","castanha","outro","prato","doce","fruta","salgado", "prato","farinha","doce","doce","prato","doce","vegetal","salgado","doce","doce","vegetal","doce","prato","bebida","prato","prato", "prato","fruta","doce","fruta","prato","salgado","salgado","doce","tempero","leguminosa","prato","prato","prato","prato","prato", "prato","prato","prato","prato","prato","doce","doce","doce","doce","doce","doce","doce","doce","bebida","bebida","bebida","bebida", "bebida","bebida","bebida","bebida","bebida","bebida","prato","prato","prato","prato","doce","prato","fruta","farinha","vegetal", "pao","cereal","prato","doce","prato","fruta","fruta","seca","vegetal","prato","bebida") tabela<-data.frame(Alimento,Classe,numero_medida,medida,unidade,carboidrato) #criar data frame com informações dos alimentos } if (ref == FALSE){ #condição para a função retornar o cálculo dos alimentos escolhidos no argumento "alimento" al<-tabela[tabela$Alimento %in% alimento, ] #ler os caracteres listados no argumento "alimento" e que estão contidos na tabela da função carb<-g/length(alimento) #definir a quantidade de carboidrato em cada alimento escolhido, em proporção(es) igual para cada alimento (quantidade (g)/numero de alimentos) numero<-vector() #criar vetor vazio para colocar o resultado do for para o cálculo da nova medida do alimento peso<-vector() #criar vetor vazio para colocar resultado do for para o cálculo do novo peso do alimento for(i in 1:nrow(al)){ #calcular valores para todas as linhas do data frame criado no passo anterior numero[i]<-((carb*al[i,"numero_medida"])/al[i,"carboidrato"]) #calcular novo valor de medida do alimento peso[i]<-((carb*al[i,"unidade"])/al[i,"carboidrato"]) #calcular novo peso do alimento } result<-al[["carboidrato"]]<-round(carb) #substituir a coluna "carboidrato" pelo novo cálculo de carboidrato arredondado colnames(al)[colnames(al)=="carboidrato"]<-"carboidrato(g)" #dar nome à coluna result2<-al[["numero_medida"]]<-round(numero,1) #substituir a coluna "numero_medida" pelo novo valor, arredondando para uma casa decimal colnames(al)[colnames(al)=="numero_medida"]<-" " #dar nome à coluna result3<-al[["unidade"]]<-round(peso) #substituir a coluna "unidade" pelo novo valor do peso arredondado colnames(al)[colnames(al)=="unidade"]<-"peso(g)/volume(ml)" #dar nome à coluna } else{ #se condição acima for falsa (ref=TRUE) if(ref == "café") { #condição se ref = café itens=4 #estabelecer o número de itens da refeição carb<-g/itens #estabelecer a quantidade de carboidrato em cada item (dividir g igualmente entre alimentos) al1<-sample((tabela[Classe == "fruta", "Alimento"]),1) #fazer o sorteio do alimento da classe "fruta" al1.1<-tabela[tabela$Alimento %in% al1, ] #separar a linha com o alimento sorteado al2<-sample((tabela[Classe == "pao", "Alimento"]),1) #fazer sorteio do alimento da classe "pão" al2.1<-tabela[tabela$Alimento %in% al2, ] #separar a linha com o alimento sorteado al3<-sample((tabela[Classe == "laticinio", "Alimento"]),1) #fazer o sorteio do alimento da classe "laticinio" al3.1<-tabela[tabela$Alimento %in% al3, ] #separar a linha com o alimento sorteado al4<-sample((tabela[Classe == "cereal.matinal", "Alimento"]),1) #fazer o sorteio do alimento da classe "cereal.matinal" al4.1<-tabela[tabela$Alimento %in% al4, ] #separar a linha com o alimento sorteado al<-rbind(al1.1, al2.1, al3.1, al4.1) #juntar linhas dos alimentos sorteados em um novo data frame numero<-vector() #criar vetor vazio para colocar o resultado do for para o cálculo da nova medida do alimento peso<-vector() #criar vetor vazio para colocar resultado do for para o cálculo do novo peso do alimento for(i in 1:nrow(al)){ #calcular valores para todas as linhas do data frame criado no passo anterior numero[i]<-((carb*al[i,"numero_medida"])/al[i,"carboidrato"]) #calcular novo valor de medida do alimento peso[i]<-((carb*al[i,"unidade"])/al[i,"carboidrato"]) #calcular novo peso do alimento } result<-al[["carboidrato"]]<-round(carb) #substituir a coluna "carboidrato" pelo novo cálculo de carboidrato arredondado colnames(al)[colnames(al)=="carboidrato"]<-"carboidrato(g)" #dar nome à coluna result2<-al[["numero_medida"]]<-round(numero,1) #substituir a coluna "numero_medida" pelo novo valor, arredondando para uma casa decimal colnames(al)[colnames(al)=="numero_medida"]<-" " #dar nome à coluna result3<-al[["unidade"]]<-round(peso) #substituir a coluna "unidade" pelo novo valor do peso arredondado colnames(al)[colnames(al)=="unidade"]<-"peso(g)/volume(ml)" #dar nome à coluna } if(ref == "almoço" | ref == "janta"){ #condição se ref = "almoço" ou ref = "janta" itens=4 #estabelecer o número de itens da refeição carb<-g/itens #estabelecer a quantidade de carboidrato em cada item (dividir g igualmente entre alimentos) al1<-sample((tabela[Classe == "cereal", "Alimento"]),1) #fazer o sorteio do alimento da classe "cereal" al1.1<-tabela[tabela$Alimento %in% al1, ] #separar a linha com o alimento sorteado al2<-sample((tabela[Classe == "leguminosa", "Alimento"]),1) #fazer o sorteio do alimento da classe "leguminosa" al2.1<-tabela[tabela$Alimento %in% al2, ] #separar a linha com o alimento sorteado al3<-sample((tabela[Classe == "vegetal", "Alimento"]),1) #fazer o sorteio do alimento da classe "vegetal" al3.1<-tabela[tabela$Alimento %in% al3, ] #separar a linha com o alimento sorteado al4<-sample((tabela[Classe == "proteina", "Alimento"]),1) #fazer o sorteio do alimento da classe "proteina" al4.1<-tabela[tabela$Alimento %in% al4, ] #separar a linha com o alimento sorteado al<-rbind(al1.1, al2.1, al3.1, al4.1) #juntar linhas dos alimentos sorteados em um novo data frame numero<-vector() #criar vetor vazio para colocar o resultado do for para o cálculo da nova medida do alimento peso<-vector() #criar vetor vazio para colocar resultado do for para o cálculo do novo peso do alimento for(i in 1:nrow(al)){ #calcular valores para todas as linhas do data frame criado no passo anterior numero[i]<-((carb*al[i,"numero_medida"])/al[i,"carboidrato"]) #calcular novo valor de medida do alimento peso[i]<-((carb*al[i,"unidade"])/al[i,"carboidrato"]) #calcular novo peso do alimento } result<-al[["carboidrato"]]<-round(carb) #substituir a coluna "carboidrato" pelo novo cálculo de carboidrato arredondado colnames(al)[colnames(al)=="carboidrato"]<-"carboidrato(g)" #dar nome à coluna result2<-al[["numero_medida"]]<-round(numero,1) #substituir a coluna "numero_medida" pelo novo valor, arredondando para uma casa decimal colnames(al)[colnames(al)=="numero_medida"]<-" " #dar nome à coluna result3<-al[["unidade"]]<-round(peso) #substituir a coluna "unidade" pelo novo valor do peso arredondado colnames(al)[colnames(al)=="unidade"]<-"peso(g)/volume(ml)" #dar nome à coluna } if(ref == "almoço veg" | ref == "janta veg"){ #condição se ref = "almoço veg" ou ref = "janta veg" itens=4 #estabelecer o número de itens da refeição carb<-g/itens #estabelecer a quantidade de carboidrato em cada item (dividir g igualmente entre alimentos) al1<-sample((tabela[Classe == "cereal", "Alimento"]),1) #fazer o sorteio do alimento da classe "cereal" al1.1<-tabela[tabela$Alimento %in% al1, ] #separar a linha com o alimento sorteado al2<-sample((tabela[Classe == "leguminosa", "Alimento"]),1) #fazer o sorteio do alimento da classe "leguminosa" al2.1<-tabela[tabela$Alimento %in% al2, ] #separar a linha com o alimento sorteado al3<-sample((tabela[Classe == "vegetal", "Alimento"]),1) #fazer o sorteio do alimento da classe "vegetal" al3.1<-tabela[tabela$Alimento %in% al3, ] #separar a linha com o alimento sorteado al4<-sample((tabela[Classe == "vegetal", "Alimento"]),1) #fazer o sorteio do alimento da classe "vegetal" al4.1<-tabela[tabela$Alimento %in% al4, ] #separar a linha com o alimento sorteado al<-rbind(al1.1, al2.1, al3.1, al4.1) #juntar linhas dos alimentos sorteados em um novo data frame numero<-vector() #criar vetor vazio para colocar o resultado do for para o cálculo da nova medida do alimento peso<-vector() #criar vetor vazio para colocar resultado do for para o cálculo do novo peso do alimento for(i in 1:nrow(al)){ #calcular valores para todas as linhas do data frame criado no passo anterior numero[i]<-((carb*al[i,"numero_medida"])/al[i,"carboidrato"]) #calcular novo valor de medida do alimento peso[i]<-((carb*al[i,"unidade"])/al[i,"carboidrato"]) #calcular novo peso do alimento } result<-al[["carboidrato"]]<-round(carb) #substituir a coluna "carboidrato" pelo novo cálculo de carboidrato arredondado colnames(al)[colnames(al)=="carboidrato"]<-"carboidrato(g)" #dar nome à coluna result2<-al[["numero_medida"]]<-round(numero,1) #substituir a coluna "numero_medida" pelo novo valor, arredondando para uma casa decimal colnames(al)[colnames(al)=="numero_medida"]<-" " #dar nome à coluna result3<-al[["unidade"]]<-round(peso) #substituir a coluna "unidade" pelo novo valor do peso arredondado colnames(al)[colnames(al)=="unidade"]<-"peso(g)/volume(ml)" #dar nome à coluna } } return(al) #retorna o data frame al } === Help da Função === caRb package:unknown R documentation Description: caRb calcula as porções de alimentos conforme a quantidade de carboidrato escolhida. Alimentos são escolhidos pelo usuário ou sorteados pela função de acordo com o tipo de refeição escolhida. Produz um data frame com o nome do alimento, sua categoria, porção, peso e quantidade de carboidratos. Usage: caRb (alimento = TRUE, g, ref = FALSE) Arguments: alimento: vetor com um ou mais nomes de alimentos escolhidos pelo usuário. Alimentos devem estar contidos na tabela da função. g: número positivo que indica a quantidade de carboidrato (em gramas) que o usuário deseja consumir. Argumento da classe numérica ou inteira. ref: refeição escolhida pelo usuário. Pode ser “café”, “almoço”, “almoço veg”, “janta”. Usuário deve escolher apenas um tipo de refeição. Details: Se alimento = TRUE, retorna um data frame com as porções dos alimentos escolhidos e seus respectivos pesos e quantidades de carboidrato. A função também retorna a classificação do alimento (“bebida”, “biscoito”, “castanha”, “cereal”, “cereal matinal”, “doce”, “farinha”, “fruta”, “laticínio”, “leguminosa”, “prato” (pratos elaborados, ex: panqueca de carne, lasanha), “proteína” (proteína animal), “salgado”, ”seca” (frutas secas e/ou passas), “tempero”, “vegetal”, “outro” (alimentos que não se enquadram nas classes descritas acima). Nomes dos alimentos devem estar contidos na tabela da função, que contém 356 itens. Valor de g é dividido igualmente pelo número de itens escolhidos quando alimento = TRUE ou pelo número de itens de cada refeição (n = 4) quando ref = TRUE. Se ref = “café”, a função irá sortear e calcular porções dos alimentos das classes “fruta”, “pão”, “bebida” e “cereal matinal”. Se ref = “almoço” ou ref = “janta”, a função irá sortear e calcular porções dos alimentos das classes “cereal”, “leguminosa”, “vegetal” e “proteína”. Se ref = “almoço veg” ou ref = “janta veg”, a função irá excluir o alimento da classe animal e substituir por um alimento da classe “vegetal”. Porções e medidas dos alimentos são arredondadas para uma casa decimal. Peso do alimento a ser consumido e quantidade de carboidrato são arredondados para um número inteiro. Devido ao arredondamento, pode haver pequena variação em relação ao valor de “g” fornecido pelo usuário. Alguns alimentos podem retornar medida = Inf, o que significa que seu valor é muito pequeno. Tente recalcular inserindo um valor de g maior. Warnings: g precisa ser inserido na função. Se ausente, a função para e retorna um aviso ao usuário. Se g > 225, a função retornará um aviso (“Cuidado! Quantidade de carboidrato muito alta!”). Se g < 10 a função retornará um aviso (“Atenção! Quantidade de carboidrato baixa!”). Author: Natália Targhetta natalia.targhetta@usp.br References: 1. Comida que Cuida 2. O prazer na mesa e na vida de quem tem diabetes. 2015. Sanofi-Aventis Brasil. 2. Feinman et al. 2015. Dietary carbohydrate restriction as the first approach in diabetes management: Critical review and evidence base. Nutrition, 31:1-13. Examples: #definir previamente o vetor alimento alimento<-c("arroz integral","panqueca de carne","tomate") #inserir o objeto na função x<-caRb(alimento,g=30) x #definir alimentos diretamente na função y<-caRb(alimento=c("bolo de chocolate","suco de morango sem açúcar","castanha de caju"), g=27) y #deixar a função sortear os alimentos #escolher o tipo de refeição cafe<-caRb(g=25,ref="café") cafe almoço<-caRb(g=35,ref="almoço") almoço veg<-caRb(g=24,ref="almoço veg") veg Tabela com os alimentos que podem ser escolhidos na função: abacate abacaxi abacaxi em calda abóbora abobrinha açaí com guaraná acarajé acerola açúcar refinado água de coco alcachofra alfajor almôndega ameixa seca ameixa vermelha amendoim caramelizado amendoim torrado com sal amora arroz branco arroz-doce arroz integral aveia em flocos banana-maçã banana-ouro banana-prata banana à milanesa banana-passa batata cozida batata assada batata frita batata-doce assada batata-doce cozida batata-doce frita beijinho beterraba cozida bife à milanesa biscoito água e sal biscoito aveia e mel biscoito champanhe biscoito de coco biscoito cream cracker biscoito de polvilho biscoito maizena Passatempo recheado Passatempo sem recheio biscoito recheado rosquinha de coco biscoito wafer bolinho de arroz frito bolinha de queijo bolinho de bacalhau bobó de camarão bolo com glacê bolo de banana bolo de cenoura bolo de fubá bolo de milho bolo de tapioca bolo de chocolate brigadeiro broa de fubá broa de milho cacau em pó café sem açúcar caju cajuzinho caldo-de-cana canjica caqui carambola castanha de caju castanha da amazônia castanha portuguesa ketchup cenoura cozida granola cerveja chá sem açúcar champanhe chantili chocolate em pó chocolate Alpino chocolate ao leite chocolate ao leite diet chocolate Batom chocolate Bis chocolate Charge chocolate Chokito chocolate Confete chocolate Crunch chocolate Diamante Negro chocolate Galak chocolate Kinder Ovo chocolate meio amargo chocolate Milkbar chocolate Nescau chocolate Prestígio chocolate Sensação chocolate Serenata de Amor chocolate Sonho de Valsa chocolate Stickadinho chocolate Suflair chocolate Talento chocolate Talento diet chocolate Twix chocotone chuchu cozido coalhada cocada coco ralado couve-flor à milanesa couve-flor cozida couve refogada coxinha creme de espinafre creme de leite creme de milho croissant croquete curau cuscuz paulista damasco seco doce de abóbora com coco doce de batata-doce doce de coco doce de goiaba doce de leite doce de mamão empada empadão enrolado de salsicha ervilha enlatada ervilha torta cozida esfiha de carne esfiha de queijo farelo de aveia farelo de trigo farinha de arroz farinha láctea farinha de mandioca farinha de milho farinha de rosca farinha de trigo fécula de batata feijão branco cozido feijão cozido figo figo cristalizado figo em calda figo seco filé à milanesa pinha frutas cristalizadas fubá Gatorade gelatina diet gelatina geleia de amora geleia de damasco geleia de framboesa gemada goiaba goiabada goiabada light grão-de-bico cozido homus iogurte com frutas iogurte com frutas light iogurte com mel Danette Danoninho iogurte natural desnatado iogurte natural integral jabuticaba jaca jiló cozido Karo kibe assado kibe cru kibe frito kiwi laranja laranja-lima lasanha à bolonhesa leite de cabra leite de coco leite condensado leite condensado light leite de soja integral leite de soja light leite de vaca desnatado leite de vaca integral leite de vaca semidesnatado lentilha cozida limão maçã macarrão cozido maisena mamão formosa mamão papaia mandioca cozida mandioca frita inhame cozido mandioquinha manga manjar maracujá maria-mole marmelada marshmallow massa de pastel mel melancia melão merengue milho cozido milho verde enlatado milk-shake de chocolate mini pizza miojo misto-quente morango musse de chocolate musse de maracujá Mucilon de arroz Mucilon de milho nabo cozido nectarina achocolatado em pó light achocolatado em pó nêspera Neston aveia Neston vitamina nhoque nozes nuggets de frango nuggets de peixe nuggets de legumes Nutella olho-de-sogra ovinhos de amendoim paçoca palmito em conserva pamonha panetone panqueca de carne panqueca de frango pão baguete pão ciabatta pão de batata pão de centeio pão de forma pão de forma light pão de hamburguer pão de cachorro quente pão de leite pão de mel pão de milho pão de queijo pão doce recheado pão doce simples pão francês pão italiano pão sírio pão sovado pastel assado pastel de feira pastel português pavê de chocolate pavê de nozes pé-de-moleque pepino pêra pêssego pêssego em calda pimentão cozido pinhão cozido pipoca pirão de farinha de mandioca pirulito pitanga pizza polenta polvilho pudim de leite condensado pudim de pão com passas purê de batata queijadinha de coco quiabo cozido quiche de queijo quindim rabanada rabanete cru rapadura ravioli refrigerante risole risoto de frango risoto milanês romã sagu em vinho salada de frutas salpicão de frango salsichão sanduíche natural sequilho shoyu soja cozida sopa creme de cebola sopa creme de cogumelo sopa creme de espinafre sopa creme de palmito sopa de ervilha sopa de feijão sopa de frango sopa de legumes com carne sopa de lentilha sopa de macarrão sorvete de massa sorvete de massa light picolé de brigadeiro picolé de chocolate picolé de coco picolé de frutas frozen yogurt frozen yogurt diet suco de abacaxi sem açúcar suco de acerola sem açúcar suco de caju sem açúcar suco de laranja sem açúcar suco de maçã sem açúcar suco de melancia sem açúcar suco de morango sem açúcar suco de pêssego sem açúcar suco de tomate suco de uva suflê de espinafre suflê de legumes suflê de queijo sushi suspiro tabule tangerina tapioca tomate torrada trigo cozido torta de liquidificador torta de morango tutu de feijão uva uva itália uva passa vagem cozida vatapá Yakult == Arquivos função == {{:bie5782:01_curso_atual:alunos:trabalho_final:natalia.targhetta:script_funcao.r|}} {{:bie5782:01_curso_atual:alunos:trabalho_final:natalia.targhetta:help_da_funça_o_nt.txt|}} {{:bie5782:01_curso_atual:alunos:trabalho_final:natalia.targhetta:help_da_funça_o.docx|}}