【发布时间】:2023-03-28 04:35:02
【问题描述】:
我有一个数据集(我们称他为 db_data),我想从该数据集的 2 个变量中创建一个表(我们称它们为 var1 和 var2)。
db_data <- base::data.frame(var1 = c("M", "M", "F", "F", "F"),
var2 = c("brown", "blue", "brown", "brown", "brown"))
我可以很容易地做到这一点:
tab <- base::table(db_data[j = c("var1", "var2")])
tab
我的问题是我想在更大的工作中多次使用它。所以我尝试创建一个函数来做到这一点,但根本没有结果。
# Create function
tab_function = function(data,
var1,
var2) {
tab <- base::table(data[j = c(var1, var2)])
tab
}
# Test
tab_function(data = db_data, var1 = "var1", var2 = "var2")
这播放没有错误,但我得到了完全不同的结果,并且没有任何对象。我尝试使用get()、noquote() 以及
# This
tab_function(data = data, var1 = var1, var2 = var2)
# This
tab_function = function(data,
var1,
var2) {
tab <- base::table(data[j = c("var1", "var2")])
tab
}
我不明白。这似乎很容易,但它不起作用。
【问题讨论】:
-
(1) 我在
table(.)和tab_function(.)之间得到相同的结果。 (2) 两者都发出警告,不鼓励在[(drop=除外)中使用命名参数。你收到这些警告了吗?如果是这样,我建议不要忽略它们。 -
删除
j =会阻止警告。