使用for table()编写具有不确定数量变量的R函数

时间:2014-06-16 10:48:21

标签: r function

我不太熟悉处理所用变量的R函数。 这是问题所在:

我想构建一个函数,其变量...是用于table()的数据框的列名。

f <- function (data, ...){
    T <- with(data, table(...)  # ... variables input
    return(T)
}

我该如何处理代码? 非常感谢您的回答!

2 个答案:

答案 0 :(得分:1)

评估顺序显然不适用于with()。这是一个应该有效的替代方案(使用来自@DavidArenburg的样本数据)

set.seed(1)
data1 <- data.frame(a = sample(5,5), b = sample(5,5))

f <- function (data, ...) {
    xx <- lapply(substitute(...()), eval, data, parent.frame())
    T <- do.call(table, xx)
    return(T)
}

f(data = data1, a,b)

答案 1 :(得分:0)

通常要容易避免非标准评估,并使用字符串来引用data.frame中的列。

set.seed(1)
data1 <- data.frame(a = sample(5,5), b = sample(5,5))

f <- function (data, ...) {
    do.call(table,data[unlist(list(...))])

}
# the following calls to `f` return the same results
f(data = data1, 'a','b')
f(data = data1, c('a','b'))
a <- c('a','b')
f(data = data1, a)