首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用YAML文件内容解析YAML文件

使用YAML文件内容解析YAML文件
EN

Stack Overflow用户
提问于 2016-03-18 05:38:25
回答 1查看 854关注 0票数 0

我有一个名为JJ_model.yaml的YAML文件,其内容如下:

代码语言:javascript
复制
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。我希望使用R yaml包获取这个YAML文件的内容,特别是在本例中提取RF的参数,而不是SVM

我试着做了以下工作,但没能让它起作用:

代码语言:javascript
复制
# 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内容中获得它?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-03-18 05:50:37

另一例fortune(312)

这里的问题是,$表示法是一条神奇的捷径,就像任何其他魔法一样,如果使用不当,可能会使自己变成蟾蜍。-格雷格·斯诺(为了回应一个想要通过x$y而不是x[y]存储在y中的列) R-help (2012年2月)

在需要使用[[而不是$的地方:

代码语言:javascript
复制
parsed_model_yaml[[parsed_model_yaml$model_type]]$n_estimators

或者创建一个辅助函数

代码语言:javascript
复制
estimators <- function(l) l[[l[['model_type']]]][['n_estimators']]

estimators(parsed_model_yaml)

# 10

(您可能希望创建一个对象类来保存数据和一些标准的提取器函数.)

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36076914

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档