第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

快速讀取非常大的表作為數(shù)據(jù)幀

快速讀取非常大的表作為數(shù)據(jù)幀

汪汪一只貓 2019-05-28 17:33:54
快速讀取非常大的表作為數(shù)據(jù)幀我有非常大的表(3000萬行),我想加載為R中的數(shù)據(jù)幀 read.table()有很多方便的功能,但似乎實(shí)現(xiàn)中有很多邏輯會減慢速度。在我的情況下,我假設(shè)我提前知道列的類型,表不包含任何列標(biāo)題或行名稱,并且沒有任何我必須擔(dān)心的病態(tài)字符。我知道在表格中閱讀作為列表使用scan()可能非??欤纾篸atalist <- scan('myfile',sep='\t',list(url='',popularity=0,mintime=0,maxtime=0)))但是我將此轉(zhuǎn)換為數(shù)據(jù)幀的一些嘗試似乎將上述性能降低了6倍:df <- as.data.frame(scan('myfile',sep='\t',list(url='',popularity=0,mintime=0,maxtime=0))))有沒有更好的方法呢?或者很可能完全不同的方法來解決問題?
查看完整描述

4 回答

?
慕運(yùn)維8079593

TA貢獻(xiàn)1876條經(jīng)驗(yàn) 獲得超5個贊

我最初沒有看到這個問題,并在幾天后問了一個類似的問題。我將把我之前的問題記下來,但我想我會在這里添加一個答案來解釋我以前是怎么sqldf()做的。

關(guān)于將2GB或更多文本數(shù)據(jù)導(dǎo)入R數(shù)據(jù)幀的最佳方法,已經(jīng)進(jìn)行了一些討論。昨天我寫了一篇關(guān)于使用sqldf()將數(shù)據(jù)導(dǎo)入SQLite作為臨時(shí)區(qū)域的博客文章,然后將其從SQLite吸入R中。這對我來說非常有用。我能夠在<5分鐘內(nèi)輸入2GB(3列,40mm行)的數(shù)據(jù)。相比之下,該read.csv命令整晚都沒有完成。

這是我的測試代碼:

設(shè)置測試數(shù)據(jù):

bigdf <- data.frame(dim=sample(letters, replace=T, 4e7), fact1=rnorm(4e7), fact2=rnorm(4e7, 20, 50))write.csv(bigdf, 'bigdf.csv', quote = F)

我在運(yùn)行以下導(dǎo)入例程之前重新啟動了R:

library(sqldf)f <- file("bigdf.csv")system.time(bigdf <- sqldf("select * from f", dbname = tempfile(), file.format = list(header = T,
 row.names = F)))

我讓以下一行整夜運(yùn)行,但它從未完成:

system.time(big.df <- read.csv('bigdf.csv'))


查看完整回答
反對 回復(fù) 2019-05-28
?
躍然一笑

TA貢獻(xiàn)1826條經(jīng)驗(yàn) 獲得超6個贊

奇怪的是,多年來沒有人回答問題的底部,即使這是一個重要的部分 - data.frame只是具有正確屬性的列表,所以如果你有大數(shù)據(jù),你不想使用as.data.frame或類似的列表。簡單地將列表“轉(zhuǎn)”為就地?cái)?shù)據(jù)框要快得多:

attr(df, "row.names") <- .set_row_names(length(df[[1]]))class(df) <- "data.frame"

這不會使數(shù)據(jù)副本立即生成(與所有其他方法不同)。它假定您已經(jīng)相應(yīng)地設(shè)置names()了列表。

[至于將大數(shù)據(jù)加載到R中 - 我個人將它們按列轉(zhuǎn)儲到二進(jìn)制文件中并使用readBin()- 這是迄今為止最快的方法(除了映射)并且僅受磁盤速度的限制。與二進(jìn)制數(shù)據(jù)相比,解析ASCII文件本質(zhì)上很慢(即使在C中)。


查看完整回答
反對 回復(fù) 2019-05-28
  • 4 回答
  • 0 關(guān)注
  • 726 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號