我想从数据框中获取值并将它们粘贴到可用作sql查询的文本字符串中。在SAS我会这样做
proc sql noprint; Select Names into :names separated by ", " from df; quit;
这将创建一个存储所有名称的变量和名称。喜欢:Id,Name,Account。我想在R中做同样的事情,但不知道如何。我可以创建一个名称用逗号分隔的向量,每个用引号括起来,我可以使用noquote函数取出引号并将它们放在向量中,但是我无法在另一个粘贴语句中获取元素来添加&# 34; SELECT"和FROM。我无法将其全部粘贴。有没有办法在Column上提取值并创建一个可以在R中用作SQL查询的文本字符串?这是我在R中尝试的:
name = c("Id", "IsDeleted", "Name", "Credit__Loan__c")
label = c("Record Id", "Deleted", "ID", "Loan")
df = data.frame(name, label)
names(df) <- c("name", "label")
as.query.fields = noquote(paste(df$name, collaspe=", "))
as.query.final <- paste("SELECT " , noquote(paste(df$name, collaspe=", ")), " id FROM Credit_Amortization_Schedule__c")
答案 0 :(得分:2)
data(iris)
colnames(iris)
a <- noquote(paste(colnames(iris), collaspe=", "))
as.query.final <- cat("SELECT " , a, " id FROM Credit_Amortization_Schedule__c")
结果是:
SELECT Sepal.Length , Sepal.Width , Petal.Length , Petal.Width , Species , id FROM Credit_Amortization_Schedule__c
然后您可以像这样使用SQL:
require(RODBC)
result <- sqlQuery(db, as.query.final)
其中db
是您的数据库连接
或者,因为我现在看到了您的sqldf
标记,如果您想使用sqldf
它只是:
sqldf(as.query.final)
答案 1 :(得分:0)
gsubfn包支持字符串插值:
library(gsubfn)
Names <- toString( sprintf("%s '%s'", df$name, df$label) )
fn$identity("select $Names from myTable")
,并提供:
[1] "select Id 'Record Id', IsDeleted 'Deleted', Name 'ID', Credit__Loan__c 'Loan' from myTable"
以下是一些其他示例:SO example 1和SO example 2。