获取错误: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