0

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

column_name <- "run_type"

使用该rxDataStepXdf功能,我想过滤我的数据集以仅选择以下行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 参数?

4

1 回答 1

1

您可以在调用之外创建表达式rxDataStep,使其更易于阅读。然后,一种选择是parse像您一样使用,并对您的语法进行一些更改。

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

另一种选择是使用transformFunc并传递.column_nametransfFormObject

rowXform <- function(dataList) {
  dataList$.rxRowSelection <- dataList[[selCol]] == 'PRIME'
  return(dataList)
}
rxDataStep(inFile=datasetXDFPath, outFile=outputXDFPath, 
           transformObject = list(selCol = column_name))
于 2015-02-26T20:46:39.510 回答