【发布时间】:2019-08-04 22:34:02
【问题描述】:
我想将满足条件的数据框中的每一列除以同一数据框中的一列
我相信它可以通过多种方式完成,但我觉得如果我可以使用专为此类工作设计的 purrr 包来完成它对我来说会更有效率。
例如,这是可行的
t <- iris %>%
modify_if(is.numeric, ~./2)
但这不是
t <- iris %>%
modify_if(is.numeric, ~./Sepal.Length)
这会导致错误
Error in .f(.x[[i]], ...) : object 'Sepal.Length' not found
我认为它希望我将 .y 指定为“Sepal.Length”,但我想不出正确的方法。
我对 modify2、imodify、map2 和 pmap 感到困惑
如果您能指出如何正确使用 purrr 的正确指南,我将不胜感激。官方指南似乎对概念和直觉没问题
但我正在努力将其投入应用。
https://purrr.tidyverse.org/reference/modify.html
【问题讨论】:
-
对我来说 (dplyr-0.8.1),这可以正常工作:
iris %>% mutate_if(is.numeric, ~ ./Sepal.Length)。 -
@r2evans 确实可以正常工作,但如果您检查结果,则只有
Sepal.Length列是正确的。这是因为它是第一列,所以它自己除以 1,然后所有其他列除以 1即不变。 -
哎呀,对不起,我读了
modify_if并认为mutate_if,... -
如果列被重新排序以将
Sepal.Length放在最后,您可以使用mutate_if。