无法组合 X <character> 和 X <double>

问题描述 投票:0回答:2

我正在尝试使用以下命令将各种 .csv 文件合并到一个数据框中:

df<- list.files(path = "C:/Users...", pattern = "*.csv", full.names = TRUE) %>% lapply(read_csv)  %>% bind_rows  clean

但是,我收到一条错误消息,指出我无法组合 X 字符变量和 X 双变量。 有没有办法可以将其中一个转换为字符或双精度变量?

由于每个 csv 文件都略有不同,从我初学者的角度来看,相信 lapply 在这种情况下是最好的,除非有更简单的方法来解决这个问题。

感谢大家的时间和关注!

r bind lapply
2个回答
7
投票

您可以将所有文件中的

X
变量更改为字符。您还可以使用
map_df
将所有文件合并到一个数据框中。

library(tidyverse)

result <- list.files(path = "C:/Users...", pattern = "*.csv", full.names = TRUE) %>% 
  map_df(~read_csv(.x) %>% mutate(X = as.character(X)))

如果有更多列存在类型不匹配问题,您可以将所有列更改为字符,合并数据并使用

type_convert
更改其类别。

result <- list.files(path = "C:/Users...", pattern = "*.csv", full.names = TRUE) %>% 
  map_df(~read_csv(.x) %>% mutate(across(.fns = as.character))) %>%
  type_convert()

4
投票

如果所有文件具有相同的列数,则尝试

plyr::rbind.fill
而不是 dplyr::bind_rows。

 list.files(path = "C:/Users...", pattern = "*.csv", full.names = TRUE) %>% lapply(read_csv)  %>% plyr::rbind.fill
© www.soinside.com 2019 - 2024. All rights reserved.