【发布时间】:2019-12-09 10:53:15
【问题描述】:
我正在尝试将函数应用于 tibble 或 data.frame 的列,具体取决于列的索引。在我看来好几次,我只给一个 MWE
library(tidyverse)
test <- data.frame(a = c(1,2,3), b = c(7,8,9), c = c(3,5,6))
test <- test %>% as_tibble() %>% mutate_all( ~lead(., 2))
这将导致每列 2 个(仅作为示例)。但我想要的是将第一列领先 1,第二列领先 2,依此类推。做类似mutate_all(~lead(., col_number())的事情。
对于这个小例子,我知道一种方法,例如:
test <- as.matrix(test)
for (i in 1:ncol(test)){ test[,i] <- lead(test[,i], i) }
可能还有其他方法也可以,没有多想(需要先转换为矩阵,否则不会产生正确的结果,我真的不知道为什么)。
但我想用mutate 或apply 来做,一般能够获得列的索引。举个更复杂的例子。
有什么想法吗?
【问题讨论】: