r - dplyr`slice_max`插值不起作用
问题描述
给定一个data.frame
:
library(tidyverse)
set.seed(0)
df <- tibble(A = 1:10, B = rnorm(10), C = rbinom(10,2,0.6))
var <- "B"
我想通过变量的最大值过滤数据框var
。从逻辑上讲,我会这样做:
df %>%
slice_max({{ var }}, n = 5)
#> # A tibble: 1 × 3
#> A B C
#> <int> <dbl> <int>
#> 1 1 1.26 1
df %>%
slice_max(!! var, n = 5)
#> # A tibble: 1 × 3
#> A B C
#> <int> <dbl> <int>
#> 1 1 1.26 1
但是这两种插值都不起作用......我在这里错过了什么?
预期输出将与以下内容相同:
df %>%
slice_max(B, n = 5)
#> # A tibble: 5 × 3
#> A B C
#> <int> <dbl> <int>
#> 1 10 2.40 0
#> 2 3 1.33 2
#> 3 4 1.27 1
#> 4 1 1.26 1
#> 5 5 0.415 2
解决方案
我认为您需要使用此处.data
概述的较新版本:
df %>%
slice_max(.data[[var]] , n = 5)
#> # A tibble: 5 × 3
#> A B C
#> <int> <dbl> <int>
#> 1 10 2.40 0
#> 2 3 1.33 2
#> 3 4 1.27 1
#> 4 1 1.26 1
#> 5 5 0.415 2
我很困惑为什么你的方法只是获得第一行!
推荐阅读
- html - Perl 添加围绕 HTML/XML 标记中的单词
- pandas - 如何识别两个熊猫数据框中的共同元素
- android - FFmpeg - 混合视频和音频时大文件的 ANR
- python - Iconbitmap :: 在tkinter python3中找不到文件
- selenium - 找不到可点击元素的唯一 xpath
- c# - 在.Net中,将“图像”与另一张图像转换时,会影响其中一张图像的颜色质量
- sql - 如何使用两个/组合参数 1 日期和 1 时间与条件设置数据集参数
- azure - Terraform private azure load balancer issue
- java - 如何为多用户 Java 应用程序设计/保留用户角色(当前和已注册)?
- java - 如何针对列表中的某些数据单击复选框