我有一个数据文件sales_history。我想以下面的方式查询它。
my_df<-sqldf("SELECT *
FROM sales_history
WHERE Business_Unit=='RETAIL'"")
现在我想用参数datafile和column name编写一个函数来完成上述工作。如下所示:
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')
。但是,当我这样做时,第二个论点&#39;零售&#39;没有正确传递给函数。那么这样做的正确方法是什么?
我知道,对于这个例子,除了使用&#34; sqldf&#34;之外还有其他方法可以做到这一点。用于SQL查询。但我的问题在于如何正确传递column_name作为函数参数。
答案 0 :(得分:4)
sqldf
包使用gsubfn
允许您通过在&#34; $&#34;前面添加R变量的名称到SQL命令中。字符。所以你可以写
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")