path.chain: estrutura concisa para caminhos encadeados

cupom com desconto - o melhor site de cupom de desconto cupomcomdesconto.com.br


[This article was first published on krzjoa, and kindly contributed to R-bloggers]. (Você pode relatar problemas sobre o conteúdo desta página aqui)


Quer compartilhar seu conteúdo em R-bloggers? clique aqui se você tiver um blog, ou aqui se não tiver.


path.chain pacote fornece um sistema intuitivo e fácil de usar de
objetos aninhados, que representam diferentes níveis de alguns diretórios
estrutura no sistema de arquivos. Isso nos permite

Olhe para a path.chain

Às vezes, uma imagem pode dizer mais, do que mil palavras, e isso é
exatamente o caso.



cupom com desconto - o melhor site de cupom de desconto cupomcomdesconto.com.br

Motivação
———-

Tenho trabalhado no projeto ML, quando decidimos manter a estrutura de
os dados de entrada no YAML config. A estrutura estava ficando
complicado, e em algum ponto desta história ou configuração obtém uma forma como
isto:

default:
  kData:
    kRoot: 'our/super/dir'
    kTerroir:
      kRoot: 'terroir'
      kSoils: 'soils.fst'
      kTemperature: 'temperature.fst'
      kRains: 'rains.fst'
    kWineQuality:
      kChemicalParams: 'chemical_params.fst'
      kContestResults: 'contest_results.fst'

Para sua informação: o exemplo acima é totalmente fictício e tem
nada a ver com o projeto real em que estou trabalhando. Além disso, em
nosso projeto, várias vezes mais de caminhos foram definidos. Como você puder
imagine, tal estrutura nos forçou a carregar dados da seguinte maneira:

config 

Doesn’t it look redundant? So, I’ve written a path.chain package:
using it we can perform the same action with less code:

library(path.chain)

vineyard_soils 

Isn’t it nice for your eyes?

If I would like to modify the config, say, with the following change,

default:
  kData:
    kRoot: 'our/super/dir'
    kTerroir:
      kRoot: 'terroir'
      kSoils: 'vineyard_soils.fst' # 

the code is still working.

What if we would like to reconfigure our list of paths wthout changing
the code? It may probably break desired behaviour of our scripts, but
with path.chain we can easily detect the cause looking into logs.
Simply use on_path_not_exists or on_validate_path

on_validate_path(
  ~ if(tools::file_ext(.x) == '.fst') print("Invalid file")
)

on_path_not_exists(~ log_error("Path {.x} not exists"))

Para saber mais, leia o pacote
documentação.



cupom com desconto - o melhor site de cupom de desconto cupomcomdesconto.com.br
Leia Também  Março de 2020 Convite à apresentação de propostas do ISC - Agora aberto!