创建可灵活引用不同数据集的 R 函数

Create R Function with flexibility to reference different datasets

我正在尝试在 R 中创建一个可以引用多个数据集和多个变量名称的简单函数。使用以下代码,我得到一个错误,我认为这是由于引用:

set.seed(123)
dat1 <- data.frame(x = sample(10), y = sample(10), z = sample(10))
dat2 <- data.frame(x = sample(10), y = sample(10), z = sample(10))

table(dat1$x, dat1$y)
table(dat2$x, dat2$y)

fun <- function(dat, sig, range){print(table(dat$sig, dat$range))}

fun(dat = dat1, sig = x, range =  y)
fun(dat = dat2, sig = x, range =  y)

知道如何调整此代码以使其能够 return table 吗?

数据框上的 [[ ]] 运算符类似于 $ 但允许您引入一个对象并查找它的值。然后在函数之外将“x”值分配给 sig。如果你不加引号,R 会寻找 x object

fun <- function(dat, sig, range){print(table(dat[[sig]], dat[[range]]))}

fun(dat = dat1, sig = "x", range =  "y")
fun(dat = dat2, sig = "x", range =  "y")