我有一个名为JJ_model.yaml的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。我希望使用R yaml包获取这个YAML文件的内容,特别是在本例中提取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内容中获得它?
发布于 2016-03-18 05:50:37
另一例fortune(312)
这里的问题是,$表示法是一条神奇的捷径,就像任何其他魔法一样,如果使用不当,可能会使自己变成蟾蜍。-格雷格·斯诺(为了回应一个想要通过x$y而不是x[y]存储在y中的列) R-help (2012年2月)
在需要使用[[而不是$的地方:
parsed_model_yaml[[parsed_model_yaml$model_type]]$n_estimators或者创建一个辅助函数
estimators <- function(l) l[[l[['model_type']]]][['n_estimators']]
estimators(parsed_model_yaml)
# 10(您可能希望创建一个对象类来保存数据和一些标准的提取器函数.)
https://stackoverflow.com/questions/36076914
复制相似问题