Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/79.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 使用df列中的值创建sql查询_R_Sqldf - Fatal编程技术网

R 使用df列中的值创建sql查询

R 使用df列中的值创建sql查询,r,sqldf,R,Sqldf,我想从数据框中获取这些值,并将它们粘贴到可以用作sql查询的文本字符串中。在SAS我会这么做 proc sql noprint; Select Names into :names separated by ", " from df; quit; 这将创建一个存储所有名称的变量&name。比如:身份证、姓名、账户。我想在R做同样的事情,但不知道怎么做。我可以创建一个名称用逗号分隔的向量,每个名称都用引号括起来,我可以使用noquote函数去掉引号并将它们放在向量中,但我无法在另一个粘贴语句中获取

我想从数据框中获取这些值,并将它们粘贴到可以用作sql查询的文本字符串中。在SAS我会这么做

proc sql noprint; Select Names into :names separated by ", " from df; quit;
这将创建一个存储所有名称的变量&name。比如:身份证、姓名、账户。我想在R做同样的事情,但不知道怎么做。我可以创建一个名称用逗号分隔的向量,每个名称都用引号括起来,我可以使用noquote函数去掉引号并将它们放在向量中,但我无法在另一个粘贴语句中获取元素以添加“SELECT”和FROM。我不能把它全部涂成浆糊。有没有一种方法可以提取列上的值并创建一个文本字符串,该字符串可以用作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")
name=c(“Id”、“IsDeleted”、“name”、“Credit\u Loan\u c”)
label=c(“记录Id”、“已删除”、“Id”、“贷款”)
df=data.frame(名称、标签)
姓名(df)
然后可以将其与SQL一起使用,如下所示:

require(RODBC)
result <- sqlQuery(db, as.query.final)

gsubfn包支持字符串插值:

library(gsubfn)

Names <- toString( sprintf("%s '%s'", df$name, df$label) )
fn$identity("select $Names from myTable")

以下是一些附加示例:和。

我认为
whisker
brew
软件包在这里会有所帮助。不知道您是否意识到,但是您的
collapse
拼写错误(您有
collaspe
),这会影响最终结果。您不需要使用
noquote
函数(它只影响对象的打印方式),您可以通过调用
sqlQuery
(或类似函数)直接传递
as.query.final
对象来执行查询。是的,感谢您掌握了拼写。那只是个打字错误,不是问题所在。另外,我正在使用R查询Salesforce(使用rforcecom和soql),因此我确实需要控制Select语句的创建,因此as.query.final中的sqlQuery无法工作。我唯一能做的就是使用cat方法筛选、复制和粘贴结果,然后删除from语句之前的尾随逗号。唉,在我的懒惰中,我希望能够完全自动化它,但我不能。谢谢,我看到您的方法将它打印到屏幕上并正常工作,但我没有让它将cat的值存储到vector call as.query.final中。当我打印向量时,它是空的。我遗漏了什么吗?哦,好吧,嗯,我用
sqlQuery
测试了它,但也许你用的是不同的方法还是别的什么?如果你能粘贴你描述的错误/问题,那么我将帮助你修复它。这很好。谢谢,这正是我想要做的。它甚至会自动删除最后一个逗号。非常感谢。。。我使用非标准子查询语言进行查询,因此我需要精确控制输出内容。我正在尝试查找fn$identity的文档。所以我可以想出如何更好地使用它。我没有在CRAN pdf上看到它?我错过什么了吗?这为我的代码打开的可能性,我想知道更多。我正在看包裹,哇!谢谢…试试:
library(gsubfn)?fn
渐晕图(gsubfn)
。主页上也有一些信息。
require(RODBC)
result <- sqlQuery(db, as.query.final)
sqldf(as.query.final)
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"