当前位置: 首页 > 知识库问答 >
问题:

无法将purrr样式的lambda函数与`select()`(dplyr 1.0.0开发程序)一起使用

张宝
2023-03-14

(我目前使用的是dplyr 1.0.0的开发版本)

在dplyr 1.1.0中,across()应该取代所有限定范围的谓词。但是,当我尝试使用select()的purrr样式函数时,就像使用select_if()一样,它会出现错误,我找到的唯一解决办法是使用替换的select_if()

library(dplyr)
#> 
#> Attaching package: 'dplyr'
#> The following objects are masked from 'package:stats':
#> 
#>     filter, lag
#> The following objects are masked from 'package:base':
#> 
#>     intersect, setdiff, setequal, union

df <- tibble(x = c(1,2,3), y = c(4,5,NA), 
             z = c(NA, NA, NA), a = c("1", "2", "3"))

select(df, is.numeric | contains("a"))
#> # A tibble: 3 x 3
#>       x     y a    
#>   <dbl> <dbl> <chr>
#> 1     1     4 1    
#> 2     2     5 2    
#> 3     3    NA 3

select(df, ~!all(is.na(.)))
#> Error: Must subset columns with a valid subscript vector.
#> x Subscript has the wrong type `formula`.
#> ℹ It must be numeric or character.

select_if(df, ~!all(is.na(.)))
#> # A tibble: 3 x 3
#>       x     y a    
#>   <dbl> <dbl> <chr>
#> 1     1     4 1    
#> 2     2     5 2    
#> 3     3    NA 3

由reprex包(v0.3.0)在2020-04-17创建

共有1个答案

魏健柏
2023-03-14

我们可以在select上传递一个常规的匿名函数

library(dplyr)
select(df, function(x) !all(is.na(x)))
# A tibble: 3 x 3
#     x     y a    
#  <dbl> <dbl> <chr>
#1     1     4 1    
#2     2     5 2    
#3     3    NA 3    
 类似资料:
  • 我正在尝试为模板制作一个包含node、express和ejs的简单服务器。我已经让服务器指向页面,加载它,甚至能够用include语句生成其他代码。但是,由于某种原因,样式表将不会加载。 应用程序JS ejs文件位于views/board.ejs目录中 并且style.css位于与app.js相对的styles/style.css目录中 对于链接的href,我尝试了所有我能想到的路径,包括相对于我

  • 问题内容: 我正在尝试运行SQL查询以获取四个随机项。由于表中product_filter有多个toupleproduct我必须使用DISTINCTin SELECT,所以出现此错误: 对于SELECT DISTINCT,ORDER BY表达式必须出现在选择列表中 但是,如果我RANDOM()输入了SELECT它,将会避免DISTINCT结果。 有人知道如何DISTINCT与RANDOM()功能一

  • 我正在尝试在项目中使用 我无法使用的样式。组件负载良好,但LESS负载不佳。 除了遵循创建教程用法之外,还有什么特别的事情要做吗?

  • 问题内容: 我想确保数据库中是否存在临时表。 我尝试使用函数,但似乎无法将其用于临时表。 我该如何解决这个问题? 问题答案: 使用 在另一个数据库的上下文中运行时获取临时表的ID。

  • 我是Spring Framework的新手。试图制作一个基于Java的Spring MVC项目。这是我的主要应用程序类 当我运行项目时,我得到了错误 为什么Spring不能显示JSP文件?