Разобрать файл YAML, используя его содержимое

У меня есть файл YAML с именем JJ_model.yaml, содержимое которого указано ниже:

author : JJ  
train_data_source : clean_train.csv
test_data_source : clean_test.csv
model_type : RF
RF:
    n_estimators : 10
    criterion : 'gini'
    max_features : 'auto'
    max_depth : 2
    n_jobs : 1
SVM:
    kernel : 'rbf'
    degree : 3
    gamma : 'auto'
    tol : 0.001

model_type поле RF в этом случае. Я хочу забрать содержимое этого файла YAML, используя Ryaml пакет и, в частности, подобрать параметры для RF в этом случае в отличие от SVM,

Я попытался сделать следующее, но не могу заставить его работать:

# read in and parse the yaml file
parsed_model_yaml <- yaml::yaml.load_file(input = file.path(wd_model_spec
                                                            , "JJ"
                                                            , "JJ_model.yaml"))
# This explicit reference works
test              <- parsed_model_yaml$RF$n_estimators
# This throws an error '$ operator is invalid for atomic vectors'
test_meta_parse   <- parsed_model_yaml$model_type$`parse(parsed_model_yaml$model_type)``

Может ли кто-нибудь объяснить, как получить model_type без явного перехода в RF ссылка явно, но получить его из содержимого YAML?

1 ответ

Решение

Еще один случай fortune(312)

Проблема здесь в том, что нотация $ является магическим ярлыком и, как и любая другая магия, при неправильном использовании может сделать программный эквивалент превращения себя в жабу. - Грег Сноу (в ответ на пользователя, который хотел получить доступ к столбцу, имя которого хранится в y с помощью x$y, а не x[[y]]]) R-help (февраль 2012 г.)

использование [[ не $ где вам нужно:

parsed_model_yaml[[parsed_model_yaml$model_type]]$n_estimators

или сделать вспомогательную функцию

estimators <- function(l) l[[l[['model_type']]]][['n_estimators']]

estimators(parsed_model_yaml)

# 10

(Возможно, вы захотите создать класс объекта для хранения ваших данных и некоторых стандартных функций экстрактора....)

Другие вопросы по тегам