安全地保存每次迭代的当前时间(purrr :: map())
Save current time for each iteration in safely(purrr::map())
如何向 safely(map())
的输出添加额外的列表元素?
正在安全地输出一个列表,所以我应该能够append()
一个新的列表元素?
我的尝试失败了:
library(tidyverse)
mtcars |>
mutate(result_var =
map(hp,
safely(
function(x)
{
2+2 # long operation I wish to know the finish time
}
)
) |> append(Sys.time())
) |>
head()
#> Error: Problem with `mutate()` input `result_var`.
#> x Input `result_var` can't be recycled to size 32.
#> i Input `result_var` is `append(...)`.
#> i Input `result_var` must be size 32 or 1, not 33.
你可以使用-
library(tidyverse)
mtcars |>
mutate(result_var = map(hp, safely(function(x) {
list(2+2 ,# long operation I wish to know the finish time
Sys.time()
)
}
)
)
) -> result
这会 return -
head(result$result_var, 2)
#[[1]]
#[[1]]$result
#[[1]]$result[[1]]
#[1] 4
#[[1]]$result[[2]]
#[1] "2022-05-20 20:03:49 IST"
#[[1]]$error
#NULL
#[[2]]
#[[2]]$result
#[[2]]$result[[1]]
#[1] 4
#[[2]]$result[[2]]
#[1] "2022-05-20 20:03:49 IST"
#[[2]]$error
#NULL
如何向 safely(map())
的输出添加额外的列表元素?
正在安全地输出一个列表,所以我应该能够append()
一个新的列表元素?
我的尝试失败了:
library(tidyverse)
mtcars |>
mutate(result_var =
map(hp,
safely(
function(x)
{
2+2 # long operation I wish to know the finish time
}
)
) |> append(Sys.time())
) |>
head()
#> Error: Problem with `mutate()` input `result_var`.
#> x Input `result_var` can't be recycled to size 32.
#> i Input `result_var` is `append(...)`.
#> i Input `result_var` must be size 32 or 1, not 33.
你可以使用-
library(tidyverse)
mtcars |>
mutate(result_var = map(hp, safely(function(x) {
list(2+2 ,# long operation I wish to know the finish time
Sys.time()
)
}
)
)
) -> result
这会 return -
head(result$result_var, 2)
#[[1]]
#[[1]]$result
#[[1]]$result[[1]]
#[1] 4
#[[1]]$result[[2]]
#[1] "2022-05-20 20:03:49 IST"
#[[1]]$error
#NULL
#[[2]]
#[[2]]$result
#[[2]]$result[[1]]
#[1] 4
#[[2]]$result[[2]]
#[1] "2022-05-20 20:03:49 IST"
#[[2]]$error
#NULL