R 是否将管道运算符用于“expss::uselabels()”?

R 是否将管道运算符用于“expss::uselabels()”?,r,dplyr,tidyverse,expss,R,Dplyr,Tidyverse,Expss,我正在尝试导入expss::uselabels() 我尝试做的一个简单的可复制示例(没有管道)是一个标签为lm()的模型: library(tidyverse) library(expss) df <- mtcars df <- apply_labels(df, cyl = "Number of Cylinders", disp = "Displacement")

我正在尝试导入
expss::uselabels()

我尝试做的一个简单的可复制示例(没有管道)是一个标签为
lm()
的模型:

library(tidyverse) library(expss) df <- mtcars df <- apply_labels(df, cyl = "Number of Cylinders", disp = "Displacement") fit_1 <- df %>% use_labels(lm(formula = mpg ~ disp + cyl)) summary(fit_1) 我的问题:我可以先拿一个
lm()
模型,然后用管道插入
使用标签()
?我在下面尝试过,但我一定是错误地引用了这两个参数

fit_1<- df %>% lm(formula = mpg ~ disp + cyl) %>% use_labels(data = .x, expr = .y) 适合1% lm(公式=mpg~disp+cyl)%>% 使用_标签(数据=.x,表达式=.y)
使用标签
的工作方式非常简单明了。它只是将表达式中的所有变量名称替换为它们的标签。在第一个参数(data.frame)中搜索变量。正如@alistaire已经说过的,所有这些操作都是在对提供的表达式进行求值之前执行的,例如。G在计算
lm(公式=mpg~disp+cyl)的结果之前
。所以你的问题的答案是“不”。你不能在已经计算的结果上应用
use\u labels

看看,它使用
substitute()
来延迟
expr
的计算,我认为这不适用于管道,因为左手侧总是在右手侧之前进行计算。不管怎样,您的最后一条管道都不会工作,因为当您到达
使用标签()时,
df
已经消失,
.x
.y
什么都不是;管道中唯一的特殊变量是
,它是传递进来的经过计算的LHS,用于指定应该传递给哪个参数。您可以使用magrittrs
%T>%
管道,但是您必须调用您的模型两次:
拟合3%lm(mpg~disp+cyl,)%%>%使用标签(,lm(mpg~disp+cyl,)
fit_1<- df %>% lm(formula = mpg ~ disp + cyl) %>% use_labels(data = .x, expr = .y)