R,更改数据框中的列types
我正在使用此代码从文件夹中读取多个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应该是文本。
谢谢。
这里的主要问题是你让read_excel
函数猜测你的excel文件的数据types。 但是这个function并不总是对的。 在这种情况下,好像在一个或多个文件中有一列包含数字和字符值的混合。 因此,猜测是没有把握的。 有两种方法可以解决这个问题:
首先,如果你知道每个文件中的列数,你可以这样做:
df.list <- lapply(file.list, function(x) read_excel(x, col_types = rep("text", num_cols)))
其中num_cols
是列数。 一旦你有了你的数据框的列表,你可以编辑它来将数据types更改为适当的types。
其次,如果您知道其他列的数据types,则可以使用col_types
参数的数据types的字符向量。
编辑:
看来你的每个文件都有45列,所以你可以这样做:
df.list <- lapply(file.list, function(x) read_excel(x, col_types = rep("text", 45)))
如果您遇到以下错误:
eval(expr,envir,enclos)中的错误:需要每个列的名称和types
请务必返回并检查以确保实际上具有您在脚本中提及的相同数量的列。 此错误表示列types向量( col_types
)的长度与列名向量( col_names
)的长度不匹配。
我希望这有帮助。