如何让函数的变量名在字符串中动态动作?
下面是我想要实现的内容的摘录:一个根据varName生成列表的函数。但我无法让varName在字符串sqldf(...)
内动态动作。我认为这个问题不是特定于包sqldf
。
createExcelSheetData<-function(varName){
sqldf("
SELECT Name
FROM dataTable
WHERE Choice=varName
")
}
table1<-createExcelSheetData(1)
table2<-createExcelSheetData(2)
table3<-createExcelSheetData(3)
上面给出的内容是使用文字varName
修正的选项。
更新:在文本中包含变量,而不仅仅是在结尾。
createExcelSheetData<-function(varName){
sqldf("
SELECT Name
FROM dataTable
WHERE Choice=varName
ORDER BY Name
")
}
table1<-createExcelSheetData(1)
table2<-createExcelSheetData(2)
table3<-createExcelSheetData(3)
答案 0 :(得分:1)
fn$
在sqldf home page的示例6中进行了讨论。以下是使用R附带的iris
数据框的自包含最小可重现示例:(将来请确保所有代码都是最小且可重现的,特别是包括所有输入)。
library(sqldf)
# retrieve records for specified Species and Petal.Length above minPetalLength
f <- function(Species, minPetalLength) {
fn$sqldf("SELECT *
FROM iris
WHERE Species = '$Species' and [Petal.Length] > $minPetalLength")
}
f("virginica", 6)
,并提供:
Sepal.Length Sepal.Width Petal.Length Petal.Width Species
1 7.6 3.0 6.6 2.1 virginica
2 7.3 2.9 6.3 1.8 virginica
3 7.2 3.6 6.1 2.5 virginica
4 7.7 3.8 6.7 2.2 virginica
5 7.7 2.6 6.9 2.3 virginica
6 7.7 2.8 6.7 2.0 virginica
7 7.4 2.8 6.1 1.9 virginica
8 7.9 3.8 6.4 2.0 virginica
9 7.7 3.0 6.1 2.3 virginica