【发布时间】:2017-05-09 13:59:09
【问题描述】:
我正在使用此代码从文件夹中读取多个 excel 文件
library(readxl)
file.list <- list.files(pattern='*.xlsx')
df.list <- lapply(file.list, read_excel)
library(dplyr)
df <- bind_rows(df.list, .id = "id")
我收到了这个错误
Error in bind_rows_(x, .id) :
Can not automatically convert from numeric to character in column "c14"
.
C14 列是混合物,在某些文件中只有数字,而其他文件是文本,
有没有办法告诉 R c14 应该是文本。
谢谢。
【问题讨论】:
-
当我们不知道其他列的数据类型或列数时,很难为您提供帮助。如果知道列数,可以
df.list <- lapply(file.list, function(x) read_excel(x, col_types = rep("text", num_cols)));其中num_cols是列数。获得数据框列表后,您可以对其进行编辑以将数据类型更改为适当的类型。但是如果你知道其他列的数据类型,你可以使用带有col_types参数的数据类型的字符向量。 -
谢谢,它们是 46 列,我希望所有内容都是文本,因为本练习的目的只是将多个 excel 文件合并到一个 csv 中,然后进一步处理到 PowerQuery 中
-
那就试试
df.list <- lapply(file.list, function(x) read_excel(x, col_types = rep("text", 46)))。 -
得到这个错误 eval(expr, envir, enclos) 中的错误:每列需要一个名称和类型
-
这可能是here 报告的错误。我最好的选择是
read_excel函数正在读取最后一列(C46 之后)之后的列。