该代码有两个主要问题:
使用内置数据框
BOD
例如:
f <- function(L) { # L is named list of 2 data frames
e <- list2env(L)
list(
C = fn$sqldf("select * from `names(L)[1]`", envir = e),
D = fn$sqldf("select * from `names(L)[2]`", envir = e)
)
}
library(sqldf)
f(list(A = BOD, B = 2 * BOD))
给:
$C
Time demand
1 1 8.3
2 2 10.3
3 3 19.0
4 4 16.0
5 5 15.6
6 7 19.8
$D
Time demand
1 2 16.6
2 4 20.6
3 6 38.0
4 8 32.0
5 10 31.2
6 14 39.6
注:
以上假设您在运行时只知道数据帧的名称。如果您在编写函数时就知道它们,那么可以简单地对它们进行硬编码:
f2 <- function(L) { # L is named list of 2 data frames
e <- list2env(L)
list(
C = sqldf("select * from A", envir = e),
D = sqldf("select * from B", envir = e)
)
}
library(sqldf)
f2(list(A = BOD, B = 2 * BOD))
给出与前面所示相同的结果。