从R中的列创建逗号分隔列表

时间:2016-10-11 23:13:44

标签: r

我在R中有一个表,我希望获取数据框中列的条目,以'a,b,c,d,e'而不是[1] a b c d的形式读出,因为我想将其传递给sql查询WHERE DUMMY IN ('a,b,c,d,e')

有一种简单的方法吗?我猜我把它变成了一个巨大的字符串并添加一个','在每个人的结尾'但我想知道它是否可能只是以R自动以这种格式读取它的方式来阻止列。

任何建议都会很棒。

谢谢。

2 个答案:

答案 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

将其插入到SQL语句中
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')"