引用变量值作为 rxDataStepXdf 函数中 rowSelection 参数的列

Referencing variable value as a column for the rowSelection argument in the rxDataStepXdf function

我已经分配了一个变量来获取数据集的列名,比如说:

column_name <- "run_type"

使用 rxDataStepXdf 函数,我想将我的数据集过滤为 select 只有行 run_type = "Prime" :

rxDataStepXdf(inFile=datasetXDFPath, outFile=outputXDFPath,rowSelection=(run_type=="Prime"))

但是,我没有明确指定要过滤的列,而是需要传递变量 column_name :

rxDataStepXdf(inFile=datasetXDFPath,outFile=outputXDFPath,rowSelection=(column_name=="Prime"))

这不起作用,因为我猜测该函数会搜索名称为 "column_name" 的列。我已经尝试了以下方法,但所有方法都不适合我:

rxDataStepXdf(inFile=datasetXDFPath,outFile=outputXDFPath,rowSelection=(quote(column_name)=="Prime"))

rxDataStepXdf(inFile=datasetXDFPath,outFile=outputXDFPath,rowSelection=(get("column_name")=="Prime"))

rxDataStepXdf(inFile=datasetXDFPath,outFile=outputXDFPath,rowSelection=(eval(column_name)=="Prime"))

rxDataStepXdf(inFile=datasetXDFPath,outFile=outputXDFPath,rowSelection=(eval(parse(text="column_name"))=="PRIME"))

如何将 column_name 的值传递给 rowSelection 参数?

您可以在对 rxDataStep 的调用之外创建表达式,这样更易​​于阅读。然后,一种选择是使用 parse,就像您对语法稍作更改一样。

rowExpr <- parse(text=paste(column_name,"=='PRIME'"))
rxDataStepXdf(inFile=datasetXDFPath, outFile=outputXDFPath, rowSelection= rowExpr)

另一种选择是使用 transformFunc 并将 column_name 作为 transfFormObject 传递。

rowXform <- function(dataList) {
  dataList$.rxRowSelection <- dataList[[selCol]] == 'PRIME'
  return(dataList)
}
rxDataStep(inFile=datasetXDFPath, outFile=outputXDFPath, 
           transformObject = list(selCol = column_name))