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