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

R 如何在任何函数的mutate_all中使用多个参数?,r,dplyr,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) 它给出了一个错误 Error in mutate_impl(.data, dots) :

我的数据如下

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)
它给出了一个错误

Error in mutate_impl(.data, dots) : 
Expecting a single value:
而这个很好用

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

如果我们需要根据“grp”进行
lag
,即使用“lag\u size”中指定的值进行
lag
相应的“grp”

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

如果我们需要根据“grp”进行
lag
,即使用“lag\u size”中指定的值进行
lag
相应的“grp”

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

您在这里只能有一个
n
lag
您在这里只能有一个
n
lag
它按所有滞后值移动所有列,而我想按lag中定义的不同滞后值移动不同组_size@asad.taj您只有3列,其中一列是“grp”,而
lag_size
有3个元素。我很困惑,很抱歉,列数可能超过2,而且
grp
lag\u size
将始终具有1:1映射,因为我希望根据
lag\u size
中的值按组移动数据帧的所有列,因此,每个组将根据
lag_size
@asad.taj中的值进行移位,我想我明白了。请检查您的答案中缺少更新命令
df[,2:3]
stackoverflow不允许我进行编辑,因为它只是一个字符。它按所有滞后值移动所有列,而我想按滞后中定义的不同滞后值移动不同的组_size@asad.taj只有3列,其中一列是“grp”,而
lag\u size
有3个元素。我很困惑,很抱歉,列数可能超过2,而且
grp
lag\u size
将始终具有1:1映射,因为我希望根据
lag\u size
中的值按组移动数据帧的所有列,因此,每个组将根据
lag_size
@asad.taj中的值进行移位,我想我明白了。请检查您的答案中是否缺少UpdateCommand
df[,2:3]
stackoverflow不允许我编辑,因为它只是一个字符
res %>% 
      group_by(grp) %>% 
      summarise(n = which(!is.na(x))[1]-1)
# A tibble: 3 x 2
#     grp     n
#    <chr> <dbl>
#1 group 1    10
#2 group 2     4
#3 group 3     9