【问题标题】:How to use dplyr for programming如何使用 dplyr 进行编程
【发布时间】:2014-02-23 15:33:08
【问题描述】:

我喜欢dplyr 用于数据操作,但我不明白如何使用它进行编程。例如,要重新调整一些变量,我们可以这样做:

mutate(cars, speed.scaled = scale(speed), dist.scaled = scale(dist))

非常酷。但现在假设我想编写一个函数,使用mutate 来缩放数据框中的所有变量。如何创建 ... 参数?我能想到的最好的事情是:

fnargs <- lapply(names(cars), function(x){call("scale", as.name(x))})
names(fnargs) <- paste0(names(cars), ".scaled")
do.call(mutate, c(.data=as.name("cars"), fnargs))

或者是否有其他更易于编程的界面?

【问题讨论】:

标签: r cran dplyr


【解决方案1】:

简单易懂:使用mutate_each(cars, funs(scale))apply(cars, 2, scale)

【讨论】:

    【解决方案2】:

    这可以像这样在基础 R 中完成:

    cars.scaled <- as.data.frame(scale(cars))
    

    cars.scaled <- replace(cars, TRUE, lapply(cars, scale))
    

    cars.scaled <- cars
    cars.scaled[] <- lapply(cars, scale)
    

    上面的第一个可以翻译成%&gt;%,如下所示:

    cars.scaled <- cars %>% scale %>% as.data.frame
    

    【讨论】:

      猜你喜欢
      • 2018-11-17
      • 2023-03-08
      • 1970-01-01
      • 2018-05-04
      • 1970-01-01
      • 2018-06-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多