我有很多大文件。但我想只获取列的名称而不加载它们。 使用data.table包,我可以做到
df1 <-fread("file.txt")
names1<- names(df)
但是,为了获得所有文件的所有名称,是昂贵的。还有其他选择吗?
答案 0 :(得分:2)
许多读入数据的函数都有可选参数,可以指定您想要读入的行数。例如,read.table函数允许您这样做:
df1 <- read.table("file.txt", nrows=1, header=TRUE)
colnames(df1)
我敢打赌fread()
也有此选项。
(请注意,你甚至可以通过nrows = 0来逃避,但我还没有检查过它是否有效)
正如评论者所指出的那样,fread()
和read.table()
的工作方式略有不同。
对于fread()
,您要提供参数nrows=0
:
df1 <- fread("file.txt", nrows=0) ##works
nrows=0
是一个特殊情况,只返回列名和类型;例如,大型文件的空运行或在开始读取之前快速检查一组文件的格式一致性。
但nrows=0
是在read.table()
df1 <- fread("file.txt") ##reads entire file
df1 <- fread("file.txt", nrows=-1) ##reads entire file
df1 <- fread("file.txt", nrows=0) ##reads entire file