读取超大文件 R 的列名和列值
Reading Column Names and Column Values for Extremely Large File R
我需要在 RStudio 3(在 Mac)中加载一个 CSV 文件,大约 11GB;这使得无法使用常规命令加载。我需要基于某些列值的此数据的子集,这应该使其易于管理。我怎样才能:
获取列名而不将整个文件作为数据框加载
从该文件中读取单个列作为列表
谢谢。
这是一个方法。
1。列名
使用 reaLines
读取列名称,设置 n = 1
,以便仅读取列 headers 行。然后 scan
和 sep = ","
会将行分成列名。
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 ...
我需要在 RStudio 3(在 Mac)中加载一个 CSV 文件,大约 11GB;这使得无法使用常规命令加载。我需要基于某些列值的此数据的子集,这应该使其易于管理。我怎样才能:
获取列名而不将整个文件作为数据框加载
从该文件中读取单个列作为列表
谢谢。
这是一个方法。
1。列名
使用 reaLines
读取列名称,设置 n = 1
,以便仅读取列 headers 行。然后 scan
和 sep = ","
会将行分成列名。
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 ...