В документации от help(map)
написано
Вывод .f будет автоматически набираться вверх, например логично ->
целое число -> двойной -> символ
По-видимому, он следует большему порядку, указанному в help(c)
. Например, это выдает ошибку map_dbl(1:10, ~complex(real = .x, imaginary = 1))
.
NULL
Как вы можете видеть в этом порядке, двойное в целое число является нисходящим преобразованием. Итак, функция предназначена для того, чтобы не делать такого рода преобразования.
Решение состоит в том, чтобы либо написать функцию .f
, которая выводит целочисленные (или более низкие) классифицированные объекты (как в ответе @ Stéphane Laurent), либо просто использовать as.integer(map(.x, .f))
.
Это разновидность проверки типов , которая может быть полезной для предотвращения ошибок программирования.