【问题标题】:Using sqldf with a list of data frames in R将 sqldf 与 R 中的数据框列表一起使用
【发布时间】:2019-04-16 18:10:11
【问题描述】:

我有一个要在 sqldf 查询中使用的数据框列表。但是,我似乎无法使用 $ 或 [] 直接从 sqldf 中的列表中引用数据帧。

我的(大大简化的)代码是:

DF_List <- list(df1 = data.frame(N = 1:26, N2 = 27:52 ), df2 = data.frame(N = 1:26, L = letters[1:26] ))

sqldf("select * from DF_List$df1, DF_List$df2 where DF_List$df1.N = DF_List$df2.N")

以下工作 - 但我想直接从列表中引用数据框。

DF_List <- list(df1 = data.frame(N = 1:26, N2 = 27:52 ), df2 = data.frame(N = 1:26, L = letters[1:26] ))

new_df1 = DF_List$df1
new_df2 = DF_List$df2

sqldf("select * from new_df1, new_df2 where new_df1.N = new_df2.N")

【问题讨论】:

  • 请注意,通常将条件放入连接中:select * from new_df1 join new_df2 using(N)
  • @G.Grothendieck 感谢您的提示!

标签: r dataframe sqldf


【解决方案1】:

您可以使用with

with(
  DF_List, 
  sqldf("select * from df1, df2 where df1.N = df2.N"))

或者,将您的列表转换为环境并使用 envir 参数

sqldf("select * from df1, df2 where df1.N = df2.N", envir = as.environment(DF_List))

【讨论】:

    猜你喜欢
    • 2019-10-17
    • 2016-05-12
    • 2021-12-30
    • 2019-10-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-03
    • 2016-10-02
    相关资源
    最近更新 更多