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)