在R中,如何在给定字符串名称的列表中修改dataframe列

在R中,如何在给定字符串名称的列表中修改dataframe列,r,non-standard-evaluation,R,Non Standard Evaluation,我是新来R的。谢谢你的耐心。我正在处理调查包 背景:我正在编写一个函数,在一项复杂的调查中循环预测变量和结果变量的组合(即,svyglm(outcome~predictor)),以输出粗略的患病率。对于每个结果/预测值组合,我想首先在调查设计对象中重新调整预测值,以确保输出比率都大于1 具体问题:给定调查设计对象名称、列名和参考级别作为字符串,我如何告诉R我希望将所述列重新分级 prams16是勘测设计对象的名称,包括9个项目的列表,变量是勘测设计对象内的分析数据集(数据框),mrace是变量D

我是新来R的。谢谢你的耐心。我正在处理调查包

背景:我正在编写一个函数,在一项复杂的调查中循环预测变量和结果变量的组合(即,
svyglm(outcome~predictor)
),以输出粗略的患病率。对于每个结果/预测值组合,我想首先在调查设计对象中重新调整预测值,以确保输出比率都大于1

具体问题:给定调查设计对象名称、列名和参考级别作为字符串,我如何告诉R我希望将所述列重新分级

prams16是勘测设计对象的名称,包括9个项目的列表,变量是勘测设计对象内的分析数据集(数据框),mrace是变量DF中的一列

这些工作:

prams16$variables$mrace <- relevel(prams16$variables$mrace, ref="White")
prams16[["variables"]]["mrace"] <- relevel(prams16$variables$mrace, ref="White")

下面是一种使用表达式算法解决此问题的方法。我们的任务是构造和评估以下表达式:

myObj$myDF[[aPredictor]] <- relevel( myObj$myDF[[aPredictor]], ref=aRef )
e2 <- rlang::expr( !!e1 <- relevel(!!e1, ref=aRef) )
步骤2:构造表达式
myObj$myDF[[apredicator]]

e1 <- rlang::expr( (!!sObj)$myDF[[aPredictor]] )
和以前一样,
e1
替换为其中存储的任何表达式(即我们在步骤2中构建的表达式)

步骤4:计算表达式并检查结果:

eval.parent(e2)

## The column is now correctly releveled to Green
myObj$myDF$myPredictor
#   [1] Red   White Black Red   Green Black White Black Red   Green Black
#  Levels: Green Black Red White

你说
prams16[[“variables”][“mrace”]
有效吗?@akrun,是的,语句
prams16[[“variables”][“mrace”]可以用
dput
和预期输出更新一个小的可复制示例吗?我不确定在这个示例中如何使用dput,但我添加了一个可复制的示例。
e2 <- rlang::expr( !!e1 <- relevel(!!e1, ref=aRef) )
eval.parent(e2)

## The column is now correctly releveled to Green
myObj$myDF$myPredictor
#   [1] Red   White Black Red   Green Black White Black Red   Green Black
#  Levels: Green Black Red White