读取超大文件 R 的列名和列值

Reading Column Names and Column Values for Extremely Large File R

我需要在 RStudio 3(在 Mac)中加载一个 CSV 文件,大约 11GB;这使得无法使用常规命令加载。我需要基于某些列值的此数据的子集,这应该使其易于管理。我怎样才能:

  1. 获取列名而不将整个文件作为数据框加载

  2. 从该文件中读取单个列作为列表

谢谢。

这是一个方法。

1。列名

使用 reaLines 读取列名称,设置 n = 1,以便仅读取列 headers 行。然后 scansep = "," 会将行分成列名。

library(sqldf)

col_names <- readLines(tmpfile, n = 1)
col_names
#[1] "mpg,cyl,disp,hp,drat,wt,qsec,vs,am,gear,carb"

tc <- textConnection(col_names)
col_names <- scan(tc, sep = ",", what = character())
close(tc)

2。数据

第 4 列是 "hp。只读 read.csv.sql 的那个。 SQL 语句与 sprintf.

放在一起
col_names[4]
#[1] "hp"

SQL <- sprintf("select %s from file", col_names[4])
SQL
#[1] "select hp from file"

hp <- read.csv.sql(tmpfile, sql = SQL)
str(hp)
#'data.frame':  6718464 obs. of  1 variable:
#  $ hp: int  110 110 93 110 175 105 245 62 95 123 ...