sqldf 在控制台和代码中给出不同的结果
sqldf gives different results in console and in code
我的问题如下:当我在 R Studio 控制台和一个函数中 运行 相同的 SQL 查询时,我得到了两个不同的结果,我希望有人能告诉我我的副作用来自哪里。正在使用的数据框仅包含 3 个字段(id、时间戳、集群)。
我的函数如下:
get_cluster_boundaries <- function(clustering_result) {
library(sqldf)
dfname <- deparse(substitute(clustering_result))
all_clusters <- sqldf(paste("SELECT DISTINCT(cluster) FROM ", dfname, sep=""))
for(cluster_no in all_clusters) {
lquery <- paste("SELECT min(timestamp) FROM ", dfname, " WHERE cluster = ", cluster_no, sep="")
lower_end <- sqldf(lquery)
uquery <- paste("SELECT max(timestamp) FROM ", dfname, " WHERE cluster = ", cluster_no, sep="")
upper_end <- sqldf(uquery)
print(paste("Cluster ", cluster_no, " starts from ", lower_end, " to ", upper_end, sep=""))
}
}
这为我提供了所有集群的单一结果,同时复制粘贴单个 uquery 和 lquery 并通过仍然使用 sqldf 在 R studio 控制台中执行它们为我提供了每个集群的正确开始日期和结束日期。
我的猜测是 all_clusters 是 data.frame,而不是矢量,但我不能确定它是否有效。在 sqldf 帮助页面中我们有
The result of the specified select statement is output as a data
frame.
试试
for (cluster_no in all_clusters[,1])
我的问题如下:当我在 R Studio 控制台和一个函数中 运行 相同的 SQL 查询时,我得到了两个不同的结果,我希望有人能告诉我我的副作用来自哪里。正在使用的数据框仅包含 3 个字段(id、时间戳、集群)。
我的函数如下:
get_cluster_boundaries <- function(clustering_result) {
library(sqldf)
dfname <- deparse(substitute(clustering_result))
all_clusters <- sqldf(paste("SELECT DISTINCT(cluster) FROM ", dfname, sep=""))
for(cluster_no in all_clusters) {
lquery <- paste("SELECT min(timestamp) FROM ", dfname, " WHERE cluster = ", cluster_no, sep="")
lower_end <- sqldf(lquery)
uquery <- paste("SELECT max(timestamp) FROM ", dfname, " WHERE cluster = ", cluster_no, sep="")
upper_end <- sqldf(uquery)
print(paste("Cluster ", cluster_no, " starts from ", lower_end, " to ", upper_end, sep=""))
}
}
这为我提供了所有集群的单一结果,同时复制粘贴单个 uquery 和 lquery 并通过仍然使用 sqldf 在 R studio 控制台中执行它们为我提供了每个集群的正确开始日期和结束日期。
我的猜测是 all_clusters 是 data.frame,而不是矢量,但我不能确定它是否有效。在 sqldf 帮助页面中我们有
The result of the specified select statement is output as a data frame.
试试
for (cluster_no in all_clusters[,1])