在 lapply 中按名称指定 col_type

Specify col_type by name in lapply

我正在使用 lapply 从 Excel 将多个文件读入 R。我刚刚注意到我的一些文件中 data 列被读取为 logical 而不是 numeric

我想使用 read_xlscol_types 参数,但我的文件有不同的列数,所以想按名称调用它们。

知道我该怎么做吗? 这就是我目前导入数据的方式:

file_list=list.files(file_location, pattern="^ID.*xls",full.names = T) 
import=lapply(file_list, function(x) read_xls(x, col_names = T))

您可以定义一个列表,其中包含您打算应用于每个传入 Excel 文件的各种 col_type 向量。然后,将 lapply 与索引一起使用,以访问这些格式化向量:

cols <- list(c("logical", "numeric", "text"), c("logical", "numeric"))

lapply(seq_along(file_list), function(y, n, i) {
    read_xls(x, col_names=TRUE, col_types=cols[[i]])
}, y=file_list, n=names(file_list))

按照下面的 link 进行小演示,显示基本前提应该有效。

Demo