我正在使用 data.tables 将 csv 文件加载到 R 中fread
功能。它有一堆我不需要的列,所以select
参数就派上用场了。但是,我注意到,如果 csv 文件中不存在 select 中指定的列之一,则 fread 将默默地继续。如果 csv 文件中不存在所选列之一,是否可以使 R 抛出错误?
#csvfile has "col1" "col2" "col3" "col4" etc
colsToKeep <- c("col1", "col2" "missing")
data <- fread(csvfile, header=TRUE, select=colsToKeep, verbose=TRUE)
在上面的例子中,data
将有两列:col1
, col2
。其余列将按预期删除,但是missing
被默默地跳过。如果知道 fread 正在跳过该列,因为它没有找到它,那就太好了。
我建议先解析第一行,然后抛出您自己的错误。你可以这样做:
read_cols <- function(file_name, colsToKeep) {
header <- fread(file_name, nrows = 1, header = FALSE)
all_in_header <- all(colsToKeep %chin% unlist(header))
stopifnot(all_in_header)
fread(file_name, header=TRUE, select=colsToKeep, verbose=TRUE)
}
my_data <- read_cols(csvfile, c("col1", "col2" "missing"))
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)