[英]pass a column name correctly as a function argument for SQL query in R
我有一個數據文件sales_history。 我想以以下方式查詢它。
my_df<-sqldf("SELECT *
FROM sales_history
WHERE Business_Unit=='RETAIL'"")
現在,我想編寫一個帶有參數數據文件和列名的函數來完成上述工作。 所以像這樣:
pick_column<-function(df, column_name){
my_df<-sqldf("SELECT *
FROM df
WHERE Business_Unit==column_name"
return(my_df)
}
理想情況下,運行上述函數定義后,我應該能夠運行pick_column(sales_history,'RETAIL')
。 但是,當我這樣做時,第二個參數“ RETAIL”沒有正確傳遞給函數。 那么正確的方法是什么?
我知道在此示例中,除了對SQL查詢使用“ sqldf”以外,還有其他方法可以做到這一點。 但是,我要問的問題是如何正確地將column_name作為函數參數傳遞。
sqldf
軟件包使用gsubfn
允許您在R命令中添加R變量名,方法是在它們前面加上“ $”字符。 所以你可以寫
sales_history <- data.frame(
price=c(12,10),
Business_Unit=c("RETAIL","BUSINESS"),
stringsAsFactors=F
)
pick_column <- function(df, columnname) {
fn$sqldf("SELECT * FROM $df WHERE Business_Unit='$columnname'")
}
pick_column("sales_history","RETAIL")
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.