相关疑难解决方法(0)

dplyr :: do/purrr :: map比较,有什么优势?

当使用broom我用结合dplyr::group_by,并dplyr::do进行分组数据由于上行动@drob.例如,根据齿轮系统将线性模型拟合到汽车:

library("dplyr")
library("tidyr")
library("broom")

# using do()
mtcars %>%
  group_by(am) %>%
  do(tidy(lm(mpg ~ wt, data = .)))

# Source: local data frame [4 x 6]
# Groups: am [2]

#     am        term  estimate std.error statistic      p.value
#   (dbl)       (chr)     (dbl)     (dbl)     (dbl)        (dbl)
# 1     0 (Intercept) 31.416055 2.9467213 10.661360 6.007748e-09
# 2     0          wt -3.785908 0.7665567 -4.938848 1.245595e-04
# 3     1 (Intercept) 46.294478 3.1198212 14.838824 1.276849e-08
# 4     1          wt -9.084268 1.2565727 -7.229401 …
Run Code Online (Sandbox Code Playgroud)

r dplyr tidyr broom

27
推荐指数
0
解决办法
4778
查看次数

使用do.call和dplyr标准评估版

如何do.call使用变量参数和函数列表来使用summarise_dplyr中的标准评估版本?

## Some sample data, function, and variables to interpolate
set.seed(0)
dat <- data.frame(a=runif(10), b=runif(10))
fn <- function(x, y) IQR(x / y, na.rm = TRUE)
funs <- list(fn="fn")
targs <- list("a", "b")
Run Code Online (Sandbox Code Playgroud)

这是lazyeval::interp我正在努力工作

library(dplyr)
interp(~do.call(fn, xs), .values=list(fn=funs$fn, xs=targs))
# ~do.call("fn", list("a", "b"))
Run Code Online (Sandbox Code Playgroud)

但它不起作用,

dat %>%
  summarise_(out = interp(~do.call(fn, xs), .values=list(fn=funs$fn, xs=targs)))
Run Code Online (Sandbox Code Playgroud)

预期结果

dat %>%
  summarise(out = do.call(fn, list(a, b)))
#        out
# 1 1.084402
Run Code Online (Sandbox Code Playgroud)

如果我添加一些打印语句,我知道问题是"a"和"b"没有被正确解释,但我无法弄清楚如何正确引用它们.

fn <- function(x, y) { print(x); print(y); IQR(x / …
Run Code Online (Sandbox Code Playgroud)

r dplyr

9
推荐指数
1
解决办法
1180
查看次数

标签 统计

dplyr ×2

r ×2

broom ×1

tidyr ×1