gpt4 book ai didi

r - 将 R 公式与 dplyr 一起使用

转载 作者:行者123 更新时间:2023-12-04 08:56:30 25 4
gpt4 key购买 nike

我正在编写一个函数,该函数接受一个公式并使用该公式的不同元素来操作数据框。当我尝试使用 dplyr 时遇到了麻烦(我认为这是因为所谓的“非标准评估”)。
例如,我想引用数据框中的一列 df使用公式中的元素。如果我将公式存储为 form并想访问df的列以 form 的第一个元素命名我可以写:df[all.vars(form)[1]] .
不幸的是,以下方法不起作用:

df %>% filter(all.vars(form)[1]) < 100).
我将如何使用 dpylr 以这种方式引用变量?我已经尝试了很多东西,比如 rlang::sym但没有任何运气。

最佳答案

我们可以使用 across , 可以是一列或多列

library(dplyr)
df %>%
filter(across(all.vars(form), ~ . < 100))
如果是单列
df %>% 
filter(across(all.vars(form)[1], ~ . < 100))

或者另一个选项是 rlang::sym!!
df %>%
filter(!! rlang::sym(all.vars(form)[1]))
all.vars的输出是 character类,我们正在转换为 sym bol 和评估 ( !! )

使用一个小的可重现的例子
data(mtcars)
form <- mpg ~ cyl
mtcars %>%
filter(!! rlang::sym(all.vars(form)[1]) < 15)
# mpg cyl disp hp drat wt qsec vs am gear carb
#Duster 360 14.3 8 360 245 3.21 3.570 15.84 0 0 3 4
#Cadillac Fleetwood 10.4 8 472 205 2.93 5.250 17.98 0 0 3 4
#Lincoln Continental 10.4 8 460 215 3.00 5.424 17.82 0 0 3 4
#Chrysler Imperial 14.7 8 440 230 3.23 5.345 17.42 0 0 3 4
#Camaro Z28 13.3 8 350 245 3.73 3.840 15.41 0 0 3 4

关于r - 将 R 公式与 dplyr 一起使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63801639/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com