如何在mutate_all中为任何函数使用多个参数?

时间:2017-09-11 06:52:33

标签: r dplyr

我的数据低于

grp <- paste('group', sample(1:3, 100, replace = T))
x <- rnorm(100, 100)
y <- rnorm(100, 10)
df <- data.frame(grp = grp, x =x , y =y , stringsAsFactors = F)
lag_size <- c(10, 4, 9)

现在我尝试使用

df %>% group_by(grp) %>% mutate_all(lag, n = lag_size) %>% arrange(grp)

它出错了

Error in mutate_impl(.data, dots) : 
Expecting a single value:

然而这很好用

df %>% group_by(grp) %>% mutate_all(lag, n = 10) %>% arrange(grp)

1 个答案:

答案 0 :(得分:0)

如果我们需要根据'grp'执行namespace Com.Skp.Tmap { partial class TMapView { void DraggingAnimateThread.IDraggingCallback.Zoom(float p0, bool p1) { } void DraggingAnimateThread.IDraggingCallback.Rotate(float p0) { } } } ,即lag使用'lag_size'中指定值的相应'grp'

lag

我们可以通过第一个非NA元素的位置来检查'{1}}'grp'

library(tidyverse)
res <- map2(split(df[2:3], df$grp) , lag_size, ~.x %>% 
                 mutate_all(lag, n = .y)) %>%
                 bind_rows(., .id = 'grp')