【发布时间】:2020-03-09 14:09:23
【问题描述】:
我必须读取带有预定义列集的羽毛格式的数据文件。如果数据文件中不存在该列,则会生成错误。如何“在”读取数据集之前检查它
library(feather)
# 1. Data set
df_mtcars <- mtcars
# 2. Drop column
df_mtcars$mpg <- NULL
# 3. Save data
write_feather(df_mtcars, "df_mtcars")
# 4. How check column existance in file 'before' reading
if(!is.null(...)) {
read_feather("df_mtcars", columns = c("mpg"))
}
谢谢!
【问题讨论】:
-
不确定
feather(从未使用过)但也许我们可以使用hasName(df_mtcars, "mpg") -
在内存读取“之前”检查文件级别是否存在列的问题
-
@Andrii
feather是二进制文件格式。如果您查看read_feather的源代码,它会通过调用feather(path)将整个 文件读入内存,然后选择您想要的列。所以你最好的选择是read_feather_column <- function(path, column) {df <- feather(path); if(hasName(data, column)) return(df[column])}