假设我想运行一个循环,直到满足某个条件,此时结果被保存并退出循环:
library(tidyverse)
for (i in 1:5) {
df <- iris %>% select(i) %>% head(2)
if (names(df) == "Petal.Width") {
out <- df
break
}
}
out
如何使用purr::map
重写此内容,而不必评估每个i?
做以下操作可以得到我需要的结果,但必须评估5次,而for循环只有3次:
fun <- function(x) {
df <- iris %>% select(x) %>% head(2)
if (names(df) == "Petal.Width") {
return(df)
}
}
map_df(1:5, fun)
purrr::possibly
或purrr::safely
并带有一个stop
调用,但正如@KonradRudolph在下面所说的那样,这可能不是这些辅助函数的最佳用途或目的。 - camille