我在R中有一个表,我希望获取数据框中列的条目,以'a,b,c,d,e'
而不是[1] a b c d
的形式读出,因为我想将其传递给sql查询WHERE DUMMY IN ('a,b,c,d,e')
有一种简单的方法吗?我猜我把它变成了一个巨大的字符串并添加一个','在每个人的结尾'但我想知道它是否可能只是以R自动以这种格式读取它的方式来阻止列。
任何建议都会很棒。
谢谢。
答案 0 :(得分:7)
letters
向量内嵌在R中,paste0
允许您“崩溃”#34;具有指定分隔字符的向量,在本例中为逗号:
> paste0(letters[1:5], collapse=",")
[1] "a,b,c,d,e"
这些字母在数据框中的形式并不清楚,但如果它们只是一个名为letts
的列,则可以这样做:
paste0( dfrm$letts, collapse=",")
答案 1 :(得分:2)
我认为你真正想要的是字符串"'a', 'b', 'c', 'd'"
。我们可以使用shQuote
来引用元素,使用toString
将它们转换为单个逗号分隔的字符串。最后使用sprintf
:
lets <- c("a", "b", "c", "d")
s <- toString(shQuote(lets))
s
## [1] "'a', 'b', 'c', 'd'"
sql <- sprintf("select * from mytab where mycol in (%s)", s)
sql
## [1] "select * from mytab where mycol in ('a', 'b', 'c', 'd')"