t****a 发帖数: 1212 | 1 R在运行效率上是有很多坑,不小心就掉进去了。关于R的并行计算以及大数据操作可以
参考
http://cran.r-project.org/web/views/HighPerformanceComputing.ht
R是免费的,SAS是要付钱的。R是一种语言,SAS就是个tool。SAS总得有几个亮点,否
则谁肯花钱阿?
---------------------------
某种程度上说,R是给程序员用的,SAS是给统计师用的,客户不一样。
R有众多的第三方包,有最新的东西,这点SAS完全比不上,SAS就是个古董。
R和linux其他工具整合的很好。如果觉得它不够快,那么推荐配合其他工具一起使用。
1. 小数据直接用R
2. 中等规模数据用awk, python之类配合R
3. 大规模数据用hadoop cluster配合R streaming
在我的工作中,通常处理大规模数据,做aggregation的是其他语言,R是最后一步。
------------------------
既然知道R没有pass by reference,为什么还要传那么多大变量呢?用全局或者可以访
问的局部变量不就可以了么。
------------------------
现在R的势头很猛。去年的JSM上,出版商展出的书当中大约2/3都是R的。 |
B******5 发帖数: 4676 | |
o****o 发帖数: 8077 | 3 借帖问如何高效读入大的CSV或者任意TXT文件
比如读入一个700多MB的CSV,在r里面很慢,即使是用如下方式先预置了每列的属性:
trainset<-read.csv("train_set.csv", nrows=1000)
colClasses<-sapply(trainset, class);
trainset<-read.csv("train_set.csv", sep=",", header=T,
colClasses=colClasses)
仍然要花很长时间,差不都是SAS的30倍,SAS一分钟,R硬是花了30多分钟。 |
s*********e 发帖数: 1051 | 4 take a look at ff package
【在 o****o 的大作中提到】![](/moin_static193/solenoid/img/up.png) : 借帖问如何高效读入大的CSV或者任意TXT文件 : 比如读入一个700多MB的CSV,在r里面很慢,即使是用如下方式先预置了每列的属性: : trainset<-read.csv("train_set.csv", nrows=1000) : colClasses<-sapply(trainset, class); : trainset<-read.csv("train_set.csv", sep=",", header=T, : colClasses=colClasses) : 仍然要花很长时间,差不都是SAS的30倍,SAS一分钟,R硬是花了30多分钟。
|
o****o 发帖数: 8077 | 5 thanks, will study it.
now I found I can use SAVE(), LOAD() when I need to use the file a lot of
times in the future, shake off 50% more time comparing to read.csv(...,
colClass=colAttr), or using SCAN function
directly read ZIPPED CSV file observes no time saving so far, anyone got
luck?
【在 s*********e 的大作中提到】![](/moin_static193/solenoid/img/up.png) : take a look at ff package
|
r********0 发帖数: 65 | 6 我用LAMMPI和R做并行,真心很简单的。
R还是很有前途的,毕竟是免费,很多人愿意写插件 |
o****o 发帖数: 8077 | 7 looks like ff package helps on solving the problem where the file is TOO
large to fit in memory, like the bigmemory package does, but it doesn't help
on efficiency here as it maps data into disk.
Am I missing anything here?
>
> library(ff)
>
> system.time(
+ dsnff<-read.csv.ffdf(file="c:\_data\MNISTtrain.csv")
+ )
user system elapsed
22.44 9.30 42.17
>
> system.time(
+ dsn1<-read.csv(file="c:\_data\MNISTtrain.csv")
+ )
user system elapsed
13.71 0.04 13.77
>
>
> t<-Sys.time()
> dsn2<-read.csv(file="c:\_data\MNISTtrain.csv", header=T, nrow=100)
> colAttrs<-sapply(dsn2, class)
> dsn2<-read.csv(file="c:\_data\MNISTtrain.csv", header=T, colClasses=
colAttrs)
> Sys.time()-t
Time difference of 8.608 secs
>
>
>
> system.time(
+ save(dsn2, file="c:\_data\MNISTtrain.bin", compress=F)
+ )
user system elapsed
3.01 0.39 4.22
>
> system.time(
+ load("c:\_data\MNISTtrain.bin")
+ )
user system elapsed
3.37 0.03 3.40
>
>
【在 s*********e 的大作中提到】![](/moin_static193/solenoid/img/up.png) : take a look at ff package
|
s*********e 发帖数: 1051 | 8 是的
help
【在 o****o 的大作中提到】![](/moin_static193/solenoid/img/up.png) : looks like ff package helps on solving the problem where the file is TOO : large to fit in memory, like the bigmemory package does, but it doesn't help : on efficiency here as it maps data into disk. : Am I missing anything here? : > : > library(ff) : > : > system.time( : + dsnff<-read.csv.ffdf(file="c:\_data\MNISTtrain.csv") : + )
|
j******4 发帖数: 6090 | 9 mark一个
【在 t****a 的大作中提到】![](/moin_static193/solenoid/img/up.png) : R在运行效率上是有很多坑,不小心就掉进去了。关于R的并行计算以及大数据操作可以 : 参考 : http://cran.r-project.org/web/views/HighPerformanceComputing.ht : R是免费的,SAS是要付钱的。R是一种语言,SAS就是个tool。SAS总得有几个亮点,否 : 则谁肯花钱阿? : --------------------------- : 某种程度上说,R是给程序员用的,SAS是给统计师用的,客户不一样。 : R有众多的第三方包,有最新的东西,这点SAS完全比不上,SAS就是个古董。 : R和linux其他工具整合的很好。如果觉得它不够快,那么推荐配合其他工具一起使用。 : 1. 小数据直接用R
|
c******s 发帖数: 18 | 10 别费事了ff了,不支持mgcv,lmer,coda之类
700M要读30分钟。。。你为什么还没把它砸了 |
|
|
t****a 发帖数: 1212 | 11 read.csv不适合读很大的文件。
看看read.matrix
http://rss.acs.unt.edu/Rdoc/library/tseries/html/read.matrix.ht
印象里它用scan来读文件。
【在 o****o 的大作中提到】![](/moin_static193/solenoid/img/up.png) : 借帖问如何高效读入大的CSV或者任意TXT文件 : 比如读入一个700多MB的CSV,在r里面很慢,即使是用如下方式先预置了每列的属性: : trainset<-read.csv("train_set.csv", nrows=1000) : colClasses<-sapply(trainset, class); : trainset<-read.csv("train_set.csv", sep=",", header=T, : colClasses=colClasses) : 仍然要花很长时间,差不都是SAS的30倍,SAS一分钟,R硬是花了30多分钟。
|
o****o 发帖数: 8077 | 12 scan的问题是不能读入不同属性的列,比如文件混合了字符串和数值变量,单单是数值
矩阵还行,不过也不比预置了colClasses=的读表格函数快多少,我的经验是大约5--10
%左右
现在就是用SAS把数据处理完了,如果需要用到SAS里面没有的算法再port到R里搞
【在 t****a 的大作中提到】![](/moin_static193/solenoid/img/up.png) : read.csv不适合读很大的文件。 : 看看read.matrix : http://rss.acs.unt.edu/Rdoc/library/tseries/html/read.matrix.ht : 印象里它用scan来读文件。
|
t*******e 发帖数: 13 | 13
Try to use data.table package,
and in the new incoming release of 1.9.2, there will be a
new reading file function 'fr', it is at least 30 times faster
than read.csv
【在 t****a 的大作中提到】![](/moin_static193/solenoid/img/up.png) : R在运行效率上是有很多坑,不小心就掉进去了。关于R的并行计算以及大数据操作可以 : 参考 : http://cran.r-project.org/web/views/HighPerformanceComputing.ht : R是免费的,SAS是要付钱的。R是一种语言,SAS就是个tool。SAS总得有几个亮点,否 : 则谁肯花钱阿? : --------------------------- : 某种程度上说,R是给程序员用的,SAS是给统计师用的,客户不一样。 : R有众多的第三方包,有最新的东西,这点SAS完全比不上,SAS就是个古董。 : R和linux其他工具整合的很好。如果觉得它不够快,那么推荐配合其他工具一起使用。 : 1. 小数据直接用R
|
s*********e 发帖数: 1051 | 14 nice
【在 t*******e 的大作中提到】![](/moin_static193/solenoid/img/up.png) : : Try to use data.table package, : and in the new incoming release of 1.9.2, there will be a : new reading file function 'fr', it is at least 30 times faster : than read.csv
|
o****o 发帖数: 8077 | 15 no money
【在 c******s 的大作中提到】![](/moin_static193/solenoid/img/up.png) : 别费事了ff了,不支持mgcv,lmer,coda之类 : 700M要读30分钟。。。你为什么还没把它砸了
|
x*******i 发帖数: 1791 | |
s*r 发帖数: 2757 | 17 如果不是所有的data都要用的话,可以先load到sql里面,然后在R里面select |
w***j 发帖数: 11 | |
v*********0 发帖数: 941 | 19 Thanks for your points! 祝LZ新年顺心! |