【发布时间】:2018-08-12 15:09:11
【问题描述】:
我正在编写一个函数,以便该函数的调用者可以以声明方式编写模式:
myschema <- Schema(
patientID = character,
temp = numeric,
treated = logical,
reason_treated = factor(levels=c('fever', 'chills', 'nausea'))
)
稍后,我将能够使用此架构中声明的类型来组装数据帧。我认为这项工作的最佳人选是使用rlang 中提供的元编程功能:
Schema = function(...) {
schematypes = rlang::enexprs(...)
}
但是,大多数examples 都与捕获表达式有关,然后将它们用作函数的参数,而不是函数本身。也就是说,我发现很难捕捉到以下表达式的右侧:
patientID = character
然后可以在以后将其评估为character(myvec),只要我得到myvec。这同样适用于以下情况:
reason_treated = factor(levels=c('fever', 'chills', 'nausea'))
我稍后想将其评估为factor(myvec, levels=c('fever', 'chills', 'nausea'))
谢谢!
【问题讨论】:
标签: r rlang non-standard-evaluation