我经常希望在特定索引处添加一个新列;mutate() 没有简单的实现,而 add_column() 通过 .before 和 .after 参数实现。我希望这两个函数在简单设置中的行为相同,但事实并非如此。下面是将行索引转换为新变量的 MWE。R 文档没有说清楚:为什么这两个函数的基本语法不同?
dat <- as.tibble(matrix(rnorm(1e4), nrow=100))
dat1 <- dat %>% mutate(id=row_number()) # works as expected
dat2 <- dat %>% add_column(id=row_number()) # throws error
dat3 <- dat %>% add_column(id=1:nrow(dat), .before=1) # works, but harder to read
Run Code Online (Sandbox Code Playgroud)