我已经指定了一个变量来获取数据集的列名,例如:
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"))
这不起作用,因为我猜测该函数搜索名称为&#34; column_name&#34;的列。代替。我尝试过以下几种方式,而且所有这些方法都不适合我:
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参数?
答案 0 :(得分:1)
您可以在调用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))