dplyr取消引用不适用于过滤器功能 [英] dplyr unquoting does not work with filter function

查看:79
本文介绍了dplyr取消引用不适用于过滤器功能的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

也许我遗漏了一些东西,但是我似乎无法使dplyr的取消报价操作符与过滤器功能一起使用。

示例

  set.seed(1234)
A = matrix(rnorm(100),nrow = 10,ncol = 10)
colnames(A)<-paste( var,seq(1 :10),sep =)
varname_test<- var2

A<-as_tibble(A)

select(A,!! varname_test)#这按预期方式工作

#这不只给我var2
#为正
的行(result1<-filter(A,!! ; 0))


#这就是结果1应该看起来像
的样子(result2<-filter(A,var2> 0))

#result1不等于result2

我将不胜感激!

解决方案

我建议以下内容:

 库(dplyr)

filter_at(A,vars(starts_with(varname_test)),any_vars(。> 0))

小标题:3 x 10
var1 var2 var3 var4 var5 var6 var7 v ar8 var9 var10
< dbl> < dbl> < dbl> < dbl> < dbl> < dbl> < dbl> < dbl> < dbl> < dbl>
1 -2.35 0.0645 0.460 -0.501 -0.281 -1.01 -0.670 0.648 -0.174 1.00
2 0.429 0.959 -0.694 -1.63 -0.994 -0.162 -0.00760 2.07 0.850 -0.496
3 -0.890 2.42 -0.936 -0.466 -0.497 -1.16 0.336 -0.317 -1.19 2.12


maybe I am missing something, but I can't seem to make dplyr's unquoting operator to work with the filter function. It does with with select, but not with filter...

Example

  set.seed(1234)
  A = matrix(rnorm(100),nrow = 10, ncol = 10)
  colnames(A) <- paste("var", seq(1:10), sep = "")
  varname_test <- "var2"

  A <- as_tibble(A)

  select(A, !!varname_test) #this works as expected

  # this does NOT give me only the rows where var2
  # is positive
  (result1 <- filter(A, !!varname_test > 0))


  # This is how the result 1 should look like
  (result2 <- filter(A, var2 > 0))

  # result1 is not equal to result2

I would appreciate any help!

解决方案

I would suggest the following:

library(dplyr)   

filter_at(A, vars(starts_with(varname_test)), any_vars(. > 0))

A tibble: 3 x 10
var1   var2   var3   var4   var5   var6     var7   var8   var9  var10
<dbl>  <dbl>  <dbl>  <dbl>  <dbl>  <dbl>    <dbl>  <dbl>  <dbl>  <dbl>
1 -2.35  0.0645  0.460 -0.501 -0.281 -1.01  -0.670    0.648 -0.174  1.00 
2  0.429 0.959  -0.694 -1.63  -0.994 -0.162 -0.00760  2.07   0.850 -0.496
3 -0.890 2.42   -0.936 -0.466 -0.497 -1.16   0.336   -0.317 -1.19   2.12 

这篇关于dplyr取消引用不适用于过滤器功能的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆