Я справляюсь с пакетом purrr
и с тем, как его можно использовать для обнаружения проблем с кодом. Кажется, я не понимаю вывод, когда он используется с mapply
. Ниже я изложил рабочий пример, это правильный способ реализации кода?
x.good <- c(2, 2, 3, 3)
x.bad <- c(2, 2, "A", 3)
y <- c(2, 2, 3, 3)
mapply(sum, x.good, y) # works just fine
mapply(sum, x.bad, y) # understandably makes R unhappy
# Define a new function
library(purrr)
safe_sum <- safely(sum, otherwise=NA_real_)
# apply it
res <- mapply(safe_sum, x.bad, y)
res
2 2 A 3
result NA NA NA NA
error List,2 List,2 List,2 List,2
В уроках также используется функция map
, требуется ли это и здесь?
Обновление
работает map2
, кажется, только возвращает ошибки?
map2(x.bad, y, safe_sum)
[[1]]
[[1]]$result
[1] NA
[[1]]$error
<simpleError in sum(..., na.rm = na.rm): invalid 'type' (character) of argument>
[[2]]
[[2]]$result
[1] NA
[[2]]$error
<simpleError in sum(..., na.rm = na.rm): invalid 'type' (character) of argument>
[[3]]
[[3]]$result
[1] NA
[[3]]$error
<simpleError in sum(..., na.rm = na.rm): invalid 'type' (character) of argument>
[[4]]
[[4]]$result
[1] NA
[[4]]$error
<simpleError in sum(..., na.rm = na.rm): invalid 'type' (character) of argument>