雁起平沙的网络日志

数量金融与R

一段有用的javascript代码

| Comments

有没有发现网速不给力的时候disqus评论框加载很慢?菜鸟安装不上pygments,要实现语法高亮肿么办?用markdown写的文章链接都是原页面打开的有木有啊?我在BeiYuu的博客里发现了一段js代码,正好可以解决上面的三个问题。代码如下:

1
2
3
4
<div id="disqus_container">
    <a href="#" class="comment" onclick="return false;">点击查看评论</a>
    <div id="disqus_thread"></div>
</div>

上面这段html用来代替你原来的disqus评论框的代码,页面加载的时候只看到一个“点击查看评论”的链接。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
<script type="text/javascript">
    BYB.readyFunction = function(){
        $(document).ready(function(){
            $('pre').addClass('prettyprint linenums') //添加Google code Hight需要的class
			
			// 加载评论框
            $('#disqus_container .comment').on('click',function(){
                $(this).html('加载中...');
                var disqus_shortname = 'disqus_name';   // 注意把disqus_name修改成自己网站的disqus名
                var that = this;
                BYB.includeScript('http://' + disqus_shortname + '.disqus.com/embed.js',function(){$(that).remove()});
            });

			// 这段代码是用来提取文章中链接到其他网站的链接
			// 然后给这写链接加上外链的样式,并且修改为在新窗口打开(target=_blank)
            $('.entry a').each(function(index,element){
                var href = $(this).attr('href');
                if(href.indexOf('#') == 0){
                }else if ( href.indexOf('/') == 0 || href.toLowerCase().indexOf('beiyuu.com')>-1 ){
                }else{
                    $(this).attr('target','_blank');
                    $(this).addClass('external');
                }
            });
			
			// 导入Prettify的javascript
            BYB.includeScript('/js/prettify/prettify.js',function(){prettyPrint()});
        });
    };
</script>

他是用Google Code Prettify来实现语法高亮,使用也比较方便,只需要在<pre>的标签上加入prettyprint即可。当初我在windows下安装pygments也是折腾了很久也没成功,如果你跟我一样是菜鸟,还是尽量别往这坑里跳了,用Prettify或者gist吧,没必要再去学怎么使用python。

以上代码都是BeiYuu针对自己网站的样式写的,看官如果要用的话,请修改相应的样式名称。

参考资料

BeiYuu写的建github博客的教程 http://beiyuu.com/github-pages/

给博客侧边栏添加近期评论

| Comments

在我翻译的为Octopress修改主题和自定义样式一文后面,Eric Lau问我如何在博客侧边栏显示近期评论。本文就是针对这一问题的简短教程。

第一步:在disqus.com获取代码

登录到disqus.com,选择评论所在的网站,进入Admin,选择Tools,在code中,是Extra Widgets的代码,提供了几种Widgets插件,分别是Combination(组合式)、Recent Comments(近期评论)、 Popular Threads(热门话题)、Top Commenters(最近评论人)。该工具可以根据用户设置的参数生成代码。

三谈github页面域名绑定:域名跳转

| Comments

之前我写过浅谈github页面域名绑定再谈github页面域名绑定,在后文提到的域名跳转方法是错的。本文提供了一种正确的方法。

为什么要跳转域名

假设github上的用户名是 username,创建代码库名为username.github.com的代码库,在master分支下建立github页面,设置好域名为 mydomain.com ,则用http://username.github.com访问页面github会自动跳转到http://mydomain.com。

但是如果在已经设置了username.github.com域名之后,把项目代码库repo的gh-pages分支下的网站设置域名 mydomain2.com ,用http://username.github.com/repo访问的时候只会自动跳转到http://mydomain.com/repo,不会跳转到http://mydomain2.com 。虽然http://mydomain.com/repo的形式也可以访问,但是用于网页地址里相对路径的不同,造成很多资源(比如css和js文件)无法访问,网页变得面目全非,例如http://hsatac.github.com/octo/,它实际绑定的域名应该是http://blog.hsatac.net/,前者不能正常显示。

R的矩阵代数

| Comments

本文翻译自R in Action的附录E,如果对该书感兴趣,请自行购买或去图书馆阅读。
更多的例子请看http://yishuo.org/2011/08/matrix-operations/

书中描述的很多函数都是在矩阵上的操作。矩阵的处理根植于R语言底层。下表描述了求解线性代数问题中重要的操作符和函数。下表中,A和B是矩阵,x和b是向量,k是标量。

矩阵代数的R函数和操作符
操作符或函数描述
+ - * / ^对应元素相加、相减、相乘、相除、求幂
A %*% B矩阵相乘
A %o% B矩阵的外积。AB'
cbind(A, B, ...)横向组合矩阵或向量
col(A)求A的Choleski因子。如果R <- chol(A),则chol(A)包含上三角因子,并有R'R=A
colMeans(A)返回一个向量,包含A每列的均值
crossprod(A)A'A
crossprod(A,B)    A'B
colSums(A)返回一个向量,包含A每列的和
diag(A)返回一个向量,包含主对角线元素
diag(x)以x为主对角线元素创建对角矩阵
diag(k)如果k是标量,则创建一个k × k的单位矩阵
eigen(A)A的特征值和特征向量。如果y <- eigen(A),则
y$val是A的特征值,y$vec是A的特征向量
ginv(A)A的Moore-Penrose广义逆。(需要MASS包)
qr(A)A的QR分解。如果y <- qr(A),则
y$qr有一个包含分解值的上三角矩阵和一个包含分解值信息的下三角矩阵,y$rank是A的秩,y$qraux是包含Q其他信息的向量,y$pivot包含旋转策略的信息。
rbind(A, B, ...)纵向组合矩阵或向量
rowMeans(A)返回一个向量,包含A每行的均值
rowSums(A)返回一个向量,包含A每行的和
solve(A)求A的逆,其中A是方阵
solve(A, b)解出方程b=Ax里的向量x
svd(A)A的奇异值分解。如果y <- svd(A),则 y$d是包含A的奇异值的向量,矩阵y$u的列向量包含A的左奇异值向量,矩阵y$v的列向量包含A的右奇异值向量。
t(A)求A的转置

还有一些用户贡献的包专门用于矩阵代数。matlab 包封装了类似MATLAB语言的矩阵操作函数和变量。这些函数可以帮助用户将MATLAB程序移植到R语言代码。http://mathesaurus.sourceforge.net/octave-r.html上有一份很有用的清单可以帮助你将MATLAB语句转化为R语句。

Matrix 包提供的函数使R可以处理高密度矩阵或稀疏矩阵。它提供了对BLAS(Basic Linear Algebra Subroutines)、Lapack(dense matrix)、TAUCS(sparse matrix)和UMFPACK(sparse matrix)的高效调用。

最后,matrixStats 包提供了对矩阵的行和列的操作方法,例如计数、求和、中心趋势、离差(dispersion)等。每一个函数都进过了优化,使得可以高速高效地运行。

定制R启动环境

| Comments

本文翻译自R in Action的附录B,如果对该书感兴趣,请自行购买或去图书馆阅读。
R导论的10.8也是讲定制环境的。

程序员最喜欢做的事之一是定制启动环境,好让程序按照他们喜欢方式工作。定制启动环境可以让你设置R的选项、指定工作目录、加载常用的包、加载用户自己写的函数、设置CRAN下载网址以及其它操作。

你可以通过编辑位置初始化文件(Rprofile.site)或者目录初始化文件(.Rprofile)来定制R环境。这两个是纯文本文件,包含启动时要执行的R代码。

为Octopress修改主题和自定义样式

| Comments

本文翻译自Octopress的帮助文档Theming & Customization。 本人水平有限,不当之处请指正,欢迎留言给出修改意见。

Octopress在 .themes 目录提供了一个默认主题。当你安装Octopress时,HTML和Javascripts被复制到 /source,Sass样式表被复制到 /sass。 你可以随意修改上述文件,不过我还是设计了一些模式,来让自定制变得更简单,更新Octopress更方便。

本文分成两部分:

  1. 自定义模板 - 学习如何修改HEAD,sidebar,header,navigation 以及footer
  2. 修改样式 - 学习如何修改颜色和布局,控制样式

如何升级R

| Comments

本文翻译自R in Action的附录H,如果对该书感兴趣,请自行购买或去图书馆阅读。

R的函数update.packages()可以下载和升级安装的包,但是没有相应的函数升级R本身。如果你想把R从4.1.0版升级到5.1.1版,那你必须有点创造性。(实际上作者写书的时候R的版本还只是2.13.0,但是他说想这本书在若干年后仍然不显得过时)

从CRAN(http://cran.r-project.org/bin)下载并安装最新版的R相当简单。但是想在新安装时保留之前的个性化设置(比如之前安装的包)就复杂了。在我现在的安装中,安装了248个包。我实在是不想把这些包的名字写下来,然后在下次升级R的时候手动重装它们。

关于如何方便简洁高效地升级R,网上有很多这方面的讨论。下面描述的方法既不简洁,也不高效,但是我发现它可以用在任何平台(Windows,Mac以及Linux)。