引用变量值作为 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))
我已经分配了一个变量来获取数据集的列名,比如说:
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))