R sqldf循环并创建基于查询名称命名的数据框

时间:2016-11-02 22:56:36

标签: r loops sqldf

我想要在另一个数据帧上执行SQL查询的数据框。

queries <- structure(list(Name = c("innovation", "foos", "testing"), A = c("select * from data WHERE `TEXT` RLIKE '[[:<:]]innovat[^[:space:]]+[[:>:]]'", "select * from data WHERE `TEXT` RLIKE '[[:<:]]foo[^[:space:]]+[[:>:]]'", "select * from data WHERE `TEXT` RLIKE '[[:<:]]test[^[:space:]]+[[:>:]]'"), B = c("", "b", "b"), C = c("c", "c", "c")), .Names = c("Name", "Query", "Q1_2", "Q1_3"), row.names = c(NA, -3L), class = "data.frame")

我想使用包sqldf循环遍历这些查询,并将每个查询的数据框输出命名为在数据框查询中找到的对应名称。我还需要在每个数据框中创建一个与数据框名称匹配的新变量。

样本数据集

data <- structure(list(Participant = 1:3, A = c("and other foo things", "testing test and foo", "nothing here"), B = c("", "b", "b"), C = c("c", "c", "c")), .Names = c("Participant", "TEXT", "other", "another"), row.names = c(NA, -3L), class = "data.frame")

类似的东西:

for (i in queries[2]) {
  i<- as.data.frame(sqldf(i)
                      i$category <- i

}

但这还不行。建议?

2 个答案:

答案 0 :(得分:1)

df <- lapply(queries[[2]], sqldf) names(df) <- queries[[1]]

编辑:应该工作。

答案 1 :(得分:0)

考虑按行迭代,捕获每一行的查询名称以创建数据帧,所有这些都编译成数据帧列表。然后,您可以输出到您的全局环境(或者更好,保留在列表中):

.menu-trigger

或者,使用mapply的包装器 Map ,传入每个 Query Name 列向量:

<?php
$string="put@returns-between|par/agra\phs";  // @-|/\
$str=preg_replace("/([@|\-|\||\\\\|\/])/", " $1 ", $string);
echo $str;