Похоже, проблема в том, что для некоторых листов ZZn
содержит только цифры c, в то время как для других он также содержит символы. Как следствие, для некоторых листов ZZn
является вектором цифр c, а для других - вектором символов. Однако связывание df вместе не работает в этом случае. Это то, что сообщение об ошибке говорит вам.
В качестве примера рассмотрим следующее:
library(dplyr)
library(purrr)
sheets <- list(
a = data.frame(
ZN = c(1, 2),
ZZn = c(61201, "DFT"),
stringsAsFactors = FALSE
),
b = data.frame(
ZN = c(3, 4),
ZZn = c(61201, 61202),
stringsAsFactors = FALSE
)
)
# Error
map_df(sheets, ~ .x, .id = "sheet")
#> Error: Column `ZZn` can't be converted from character to numeric
# Works
map_df(sheets, ~ mutate(.x, ZZn = as.character(ZZn)), .id = "sheet")
#> sheet ZN ZZn
#> 1 a 1 61201
#> 2 a 2 DFT
#> 3 b 3 61201
#> 4 b 4 61202
Создано в 2020-03-29 пакетом Представления (v0.3.0)
Поэтому вам нужно преобразовать числа c в символы, прежде чем связывать листы вместе, например
map_df(sheets, ~ read_excel(path, sheet = .x) %>%
mutate(ZZn = as.character(ZZn)), .id = "sheet")