【发布时间】:2019-05-23 02:06:01
【问题描述】:
我尝试以R语言(3.6)的批处理方式从数据框中选择特定数据但失败了。
当我使用时
sqldf("select * from Interact where miRNA = 'hsa-miR-510-5p' and
Seqname ='chr3:195780289-195787118-' ")
结果没问题。
虽然我尝试过
sqldf("select * from Interact where miRNA = Interpairs[1,1] and
Seqname =Interpairs[1,2]"),
或
sqldf('select * from Interact where miRNA = Interpairs$microRNA[1] and
Seqname = Interpairs$circRNA[1]')
结果是错误的。
result_create(conn@ptr, statement) 中的错误:“[1]”附近:语法错误
我想知道是否有人可以帮助解决这个问题?
【问题讨论】:
-
这是因为您的
Interpairs是您的 R 变量。使用paste或sprintf在 SQL 语句中传递这些变量。见这里:stackoverflow.com/questions/17435086/… -
sqldf神奇地弥合了帧的存在/名称(作为伪表)的差距,但不会弥合其他变量的差距。你也可以考虑glue::glue_sql。 -
我不建议为此使用胶水或其他附加包。 sqldf 已经包含从 gsubfn 包导入并导出回来的工具,因此您不需要显式加载它。请参阅我的答案以了解首选方法。
-
感谢您的帮助。我用 MKa 和 Grothendieck 推荐的方法把它弄明白了。这是代码:
fn$sqldf("select * from Interact where miRNA= '`Interplym$microRNA[1]`' and Seqname = '`Interplym$circRNA[1]`' ")