小编Mat*_*ell的帖子

我应该学习Fortran还是C++来扩展R?

我使用相当大的数据集(它们仍然适合内存)使用机器学习,我在R中编写了一些计算,我觉得它太慢了.因此,我想用我将从R调用的编译代码替换程序的"关键部分".我手头的一个示例问题是实现前向 - 后向算法.

我的问题是我是否应该学习Fortran或C++来做到这一点?我只需要使用数字向量或矩阵.我主要感兴趣的是哪种语言更容易学习和R界面,我真的不关心哪一个在我的简历上看起来更好.

我已经阅读了R扩展手册,并使用内联包使用一些简单的Fortran和C++代码.我目前的印象是Fortran95会更容易学习,虽然Rcpp包看起来也很有趣.我目前知道R,Python和Matlab.

c++ fortran r

42
推荐指数
5
解决办法
7290
查看次数

Clojure/Incanter中的快速矢量数学

我目前正在研究Clojure和Incanter作为R的替代品.(不是我不喜欢R,但尝试使用新语言会很有趣.)我喜欢Incanter并且发现语法很吸引人,但是矢量化操作比较慢例如,R或Python.

作为一个例子,我想使用Incanter向量运算,Clojure map和R来获得向量的第一阶差分.以下是所有版本的代码和时间.如你所见,R显然更快.

Incanter和Clojure:

(use '(incanter core stats)) 
(def x (doall (sample-normal 1e7))) 
(time (def y (doall (minus (rest x) (butlast x))))) 
"Elapsed time: 16481.337 msecs" 
(time (def y (doall (map - (rest x) (butlast x))))) 
"Elapsed time: 16457.850 msecs"
Run Code Online (Sandbox Code Playgroud)

R:

rdiff <- function(x){ 
   n = length(x) 
   x[2:n] - x[1:(n-1)]} 
x = rnorm(1e7) 
system.time(rdiff(x)) 
   user  system elapsed 
  1.504   0.900   2.561
Run Code Online (Sandbox Code Playgroud)

所以我想知道有没有办法加速Incanter/Clojure中的矢量操作?还欢迎涉及使用来自Clojure的循环,Java数组和/或库的解决方案.

我还向Incanter Google小组发布了此问题,目前尚无回复.

更新:我已将Jouni的答案标记为已接受,请参阅下面的我自己的答案,我已经清理了他的代码并添加了一些基准测试.

r vector clojure incanter

23
推荐指数
2
解决办法
5502
查看次数

ESS和R的Emacs自动完成模式扩展

是否有可以与ESS一起使用的Emacs 自动完成模式的R扩展?

如果扩展名不存在,我也会感激任何写作的提示!

emacs r autocomplete ess

15
推荐指数
1
解决办法
4919
查看次数

使用Ra的R代码的JIT

我刚从Ubuntu存储库中发现了Ra.有没有人在实际项目中使用它?您是否遇到过任何问题,并且在使用Ra代替R或JIT时是否有任何权衡?

jit r

11
推荐指数
1
解决办法
579
查看次数

Python的Clojure的StringIO

有没有相当于Python的StingIO for Clojure的东西?

我正在尝试编写一个类似于SweavePweave for Clojure 的报告生成/识字编程系统.我目前正在使用临时文件,但我更喜欢使用类似于StringIO的东西.

python clojure stringio

4
推荐指数
1
解决办法
349
查看次数

标签 统计

r ×4

clojure ×2

autocomplete ×1

c++ ×1

emacs ×1

ess ×1

fortran ×1

incanter ×1

jit ×1

python ×1

stringio ×1

vector ×1