R - 在两个值之间选择字符串文本

时间:2013-08-20 17:28:35

标签: r

我有一个存储在R中的字符串。我可以使用哪些代码在两个值之间提取文本?例如:

sql <- "SELECT field1, field2, field3 FROM tbl WHERE x=y"

我想将field1, field2, field3提取为单独的字符串。我可以使用substring但我不清楚如何确定与“SELECT”结尾和“FROM”开头相关的整数值。

4 个答案:

答案 0 :(得分:5)

以下是使用gsub的一个选项:

gsub("^.*SELECT *(.*?) +FROM.*$", "\\1", sql)

答案 1 :(得分:1)

你可以这样做:

 split_sql = strsplit(sql, split = " ")
 result = paste(split_sql[1][[2]], split_sql[1][[3]], split_sql[1][[4]], sep = " ")

这会给你:

 #[1] "field1, field2, field3"

答案 2 :(得分:0)

我的偏好是:

# Pull out strings between SELECT and FROM
Fields = gsub("SELECT (.*) FROM.*","\\1",sql)
# Remove spaces
CleanFields = (gsub("\\s+", "", Fields))
# Split into items
Items = unlist(strsplit(CleanFields,","))

然后,您可以将每个field1索引为Items [1]

(当然这可以放入一个函数或组合成一行......)

答案 3 :(得分:0)

1)一种方法是删除所有不需要的东西:

gsub("^SELECT *| FROM .*", "", sql)

2)如果我们有一个带有必填字段的数据框,另一种方法是使用sqldf运行查询,然后取名字:

library(sqldf)
tbl <- data.frame(field1 = 1, field2 = 2, field3 = 3, x = 4, y = 5)
toString(names(sqldf(sql)))