功能总和不正常

时间:2016-09-12 19:15:01

标签: r

我想创建一个函数来计算子集数据集中某个变量的值,但是我的函数没有按预期工作。

selected_cyl_6 <- subset(mtcars, mtcars$cyl==6)
selected_cyl_4 <- subset(mtcars, mtcars$cyl==4)

count <- function(group,variable) {
  sum(group$variable == 4)
}

count(selected_cyl_6,gear)
# [1] 0 

答案应该是4.但是,如果我直接使用总和,我会得到正确答案

sum(selected_cyl_6$gear==4)
# [1] 4

另一个例子

count(selected_cyl_4,gear)
# [1] 0
sum(selected_cyl_4$gear==4)
# [1] 8

我做错了什么?

1 个答案:

答案 0 :(得分:2)

这是在您的函数中使用美元符号快捷方式。请参阅fortunes::fortune(343)

一些选项,使用括号表示法。

首先,使用标准评估时,您可以在使用函数时将变量名称用引号括起来。

count <- function(group, variable) {
    sum(group[[variable]] == 4)
}

count(selected_cyl_6, "gear")

如果您想使用非标准评估而不需要引号,则可以在函数中使用deparse substitute

count <- function(group, variable) {
    sum(group[[deparse(substitute(variable))]] == 4)
}

count(selected_cyl_6, gear)