我想要在另一个数据帧上执行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
}
但这还不行。建议?
答案 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;