簡體   English   中英

正確將列名作為函數參數傳遞給R中的SQL查詢

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM