Ale*_*lex 50 csv file-io r dataframe data.table
我有一个data.table
不是很大(2 GB)但由于某种原因write.csv
需要很长时间才能写出来(我从未真正完成等待)并且似乎使用了大量的RAM来完成它.
我尝试将其转换data.table
为a,data.frame
尽管自从data.table
扩展以来这不应该做任何事情data.frame
.有没有人碰到这个?
更重要的是,如果你用Ctrl- 来阻止它C,R似乎没有给回记忆.
maj*_*jom 61
更新2019.01.07:
fwrite
自2016-11-25以来一直在CRAN上.
install.packages("data.table")
Run Code Online (Sandbox Code Playgroud)
更新08.04.2016:
fwrite
最近已添加到data.table包的开发版本中.它也并行(隐式)运行.
# Install development version of data.table
install.packages("data.table",
repos = "https://Rdatatable.github.io/data.table", type = "source")
# Load package
library(data.table)
# Load data
data(USArrests)
# Write CSV
fwrite(USArrests, "USArrests_fwrite.csv")
Run Code Online (Sandbox Code Playgroud)
根据加速write.table性能所显示的详细基准测试,fwrite
比write.csv
那里(YMMV)快约17倍.
更新2015年12月15日:
将来可能会fwrite
在data.table
软件包中有一个函数,请参阅:https://github.com/Rdatatable/data.table/issues/580.在这个线程中,GIST是链接的,它提供了这样一个函数的原型,将该过程加速了2倍(根据作者,https://gist.github.com/oseiskar/15c4a3fd9b6ec5856c89).
原始答案:
我遇到了同样的问题(尝试编写更大的CSV文件)并最终决定不使用CSV文件.
我建议你使用SQLite,因为它比处理CSV文件要快得多:
require("RSQLite")
# Set up database
drv <- dbDriver("SQLite")
con <- dbConnect(drv, dbname = "test.db")
# Load example data
data(USArrests)
# Write data "USArrests" in table "USArrests" in database "test.db"
dbWriteTable(con, "arrests", USArrests)
# Test if the data was correctly stored in the database, i.e.
# run an exemplary query on the newly created database
dbGetQuery(con, "SELECT * FROM arrests WHERE Murder > 10")
# row_names Murder Assault UrbanPop Rape
# 1 Alabama 13.2 236 58 21.2
# 2 Florida 15.4 335 80 31.9
# 3 Georgia 17.4 211 60 25.8
# 4 Illinois 10.4 249 83 24.0
# 5 Louisiana 15.4 249 66 22.2
# 6 Maryland 11.3 300 67 27.8
# 7 Michigan 12.1 255 74 35.1
# 8 Mississippi 16.1 259 44 17.1
# 9 Nevada 12.2 252 81 46.0
# 10 New Mexico 11.4 285 70 32.1
# 11 New York 11.1 254 86 26.1
# 12 North Carolina 13.0 337 45 16.1
# 13 South Carolina 14.4 279 48 22.5
# 14 Tennessee 13.2 188 59 26.9
# 15 Texas 12.7 201 80 25.5
# Close the connection to the database
dbDisconnect(con)
Run Code Online (Sandbox Code Playgroud)
有关详细信息,请参阅http://cran.r-project.org/web/packages/RSQLite/RSQLite.pdf
您还可以使用http://sqliteadmin.orbmu2k.de/等软件访问数据库并将数据库导出为CSV等.
-
归档时间: |
|
查看次数: |
29356 次 |
最近记录: |