获取错误:UseMethod(“filter”)中出错:没有适用于“filter”的方法应用于类“logical”的对象

获取错误:UseMethod(“filter”)中出错:没有适用于“filter”的方法应用于类“logical”的对象,r,filter,dplyr,R,Filter,Dplyr,我很困惑,因为我认为逻辑表达式是过滤函数的参数之一?这是我的密码: simplifyList <- function(x) { x <- x %>% { filter(x$Q26 == "Yes") } } simplifyList(a) 我已经检查以确保类data.frame的a是,并且在过滤器前面添加dplyr::没有任何作用。我甚至更新了dplyr包,以防出现问题。有什么我遗漏的吗?如果没有示例数据,完全诊断有点困难,

我很困惑,因为我认为逻辑表达式是过滤函数的参数之一?这是我的密码:

simplifyList <- function(x) {
    x <- x %>% {
        filter(x$Q26 == "Yes")
    }
}
simplifyList(a)

我已经检查以确保类data.frame的a是,并且在过滤器前面添加dplyr::没有任何作用。我甚至更新了dplyr包,以防出现问题。有什么我遗漏的吗?

如果没有示例数据,完全诊断有点困难,但请尝试:

simplifyList <- function(x) {
    x %>%
        filter(Q26 == "Yes")
}
simplifyList(a)

如果没有示例数据,完全诊断有点困难,但请尝试:

simplifyList <- function(x) {
    x %>%
        filter(Q26 == "Yes")
}
simplifyList(a)
我还没有弄清楚原因,但问题是您应该使用Q26==Yes而不是x$Q26==Yes:

图书馆弹琴 dd%filterdd$Q26==是在函数外部工作。。。 我还没有弄清楚原因,但问题是您应该使用Q26==Yes而不是x$Q26==Yes:

图书馆弹琴 dd%filterdd$Q26==是在函数外部工作。。。
如果在正确的位置使用{}符号,您可以使您编写的内容正常工作:

图书馆弹琴 a 11是的 但我不建议您使用这种不寻常的语法。 相反,我会这样做:

简化列表% 过滤器Q26==是 } 李斯塔 >x Q26 >1是的 或者:

简化列表x Q26 >1是的 我希望这有助于


由v2.0.0于2021-04-25创建,如果在正确的位置使用{}符号,您可以使您编写的内容起作用:

图书馆弹琴 a 11是的 但我不建议您使用这种不寻常的语法。 相反,我会这样做:

简化列表% 过滤器Q26==是 } 李斯塔 >x Q26 >1是的 或者:

简化列表x Q26 >1是的 我希望这有助于


由v2.0.0于2021-04-25创建,这是因为在管道表达式的右侧使用了大括号{}

x%{…} 您在过滤器表达式中直接引用了数据集x

过滤器x$Q26==是 这两种观点很可能都不正确。对于第一个,请参阅%>%的帮助:

将lambda表达式与%>%一起使用

每个rhs本质上是一元函数的一个表达式体。因此,在magrittr中定义lambda是非常自然的,并且作为正则函数的定义:如果需要一个以上的表达式,那么就用一对大括号{rhs}将主体括起来。但是,请注意,大括号中没有第一个参数规则:这与编写一元函数时参数名称相同。圆点

所以不是x%>%{},而是

x%{filter.$Q26==Yes} 会有用的。或者你可以去掉大括号写下

x%过滤器x$Q26==是 这也会起作用。但你真正想做的是

x%过滤器Q26==是 或者干脆


这是因为在管道表达式的右侧使用了大括号{}

x%{…} 您在过滤器表达式中直接引用了数据集x

过滤器x$Q26==是 这两种观点很可能都不正确。对于第一个,请参阅%>%的帮助:

将lambda表达式与%>%一起使用

每个rhs本质上是一元函数的一个表达式体。因此,在magrittr中定义lambda是非常自然的,并且作为正则函数的定义:如果需要一个以上的表达式,那么就用一对大括号{rhs}将主体括起来。但是,请注意,大括号中没有第一个参数规则:这与编写一元函数时参数名称相同。圆点

所以不是x%>%{},而是

x%{filter.$Q26==Yes} 会有用的。或者你可以去掉大括号写下

x%过滤器x$Q26==是 这也会起作用。但你真正想做的是

x%过滤器Q26==是 或者干脆

x