R如何更改list.file中的数据类型以防止bind_rows错误

6rqinv9w  于 2022-12-20  发布在  其他
关注(0)|答案(1)|浏览(141)

我有多个(~40)excel文件,它们的列名相同,我想把它们都放到1 df和bind_rows中,但由于数据类型不匹配而出错。如何/何时将所有文件转换为字符,以便将行绑定到1 df中?

library(readxl)
library(tidyverse)

file.list <- list.files(pattern='*.xlsx', recursive = TRUE)

df.list <- lapply(file.list, read_excel,"Additions") 

df_all <- bind_rows(df.list, .id = "id")

运行此程序时,出现错误
bind_rows()中的错误:!不能合并1$ID2$ID
发生这种情况是因为一些ID列包含字符和一些数字。如何将所有列都设置为.character以启用bind_rows?

nfg76nw0

nfg76nw01#

列出 Dataframe 的示例数据:

[[1]]
# A tibble: 10 × 2
   ID    value
   <chr> <int>
 1 1        89
 2 2        30
 3 3        69
 4 4         2
 5 5        52
 6 6        83
 7 7        33
 8 8        67
 9 9         8
10 10       52

[[2]]
# A tibble: 10 × 2
      ID value
   <int> <int>
 1     1    74
 2     2     7
 3     3     2
 4     4    94
 5     5    24
 6     6    32
 7     7    55
 8     8    47
 9     9    49
10    10    42

将所有ID列转换为字符,然后进行行绑定

df_list %>%  
  map_dfr(~ .x %>% 
            mutate(ID = as.character(ID)))

# A tibble: 20 × 2
   ID    value
   <chr> <int>
 1 1        89
 2 2        30
 3 3        69
 4 4         2
 5 5        52
 6 6        83
 7 7        33
 8 8        67
 9 9         8
10 10       52
11 1        74
12 2         7
13 3         2
14 4        94
15 5        24
16 6        32
17 7        55
18 8        47
19 9        49
20 10       42

相关问题