<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>怡然轩 &#124; Yixuan&#039;s Blog</title>
	<atom:link href="http://yixuan.cos.name/cn/feed/" rel="self" type="application/rss+xml" />
	<link>http://yixuan.cos.name/cn</link>
	<description>平生书癖已无恙，解名缰，更逃羁网。</description>
	<lastBuildDate>Tue, 27 Mar 2012 10:06:03 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.2</generator>
		<item>
		<title>CLT的一些事</title>
		<link>http://yixuan.cos.name/cn/2012/03/something-about-clt/</link>
		<comments>http://yixuan.cos.name/cn/2012/03/something-about-clt/#comments</comments>
		<pubDate>Mon, 05 Mar 2012 15:11:12 +0000</pubDate>
		<dc:creator>yixuan</dc:creator>
				<category><![CDATA[学习中]]></category>
		<category><![CDATA[中心极限定理]]></category>
		<category><![CDATA[变异]]></category>
		<category><![CDATA[均值]]></category>
		<category><![CDATA[大师]]></category>
		<category><![CDATA[大样本]]></category>
		<category><![CDATA[对称]]></category>
		<category><![CDATA[样本量]]></category>
		<category><![CDATA[正态分布]]></category>

		<guid isPermaLink="false">http://yixuan.cos.name/cn/?p=691</guid>
		<description><![CDATA[最近在读E. L. Lehmann的Elements of Large-Sample Theory一书。说起大样本和渐进理论，我一向是敬而远之，因为只要一碰到测度论和极限定理，我就不由自主地发怵。但这本书着实给了我很多惊喜，因为整本书几乎没有提到测度这两个字，简单翻阅了一下，感觉以数学分析的内容就可以看懂其中的大部分证明，于是甚感欣慰。大师的作品确实有其独到之处，读起来很少有晦涩难懂的地方，于是趁着现在时间相对宽松，也想在大样本理论这一块入个门。Lehmann也是一位令人尊敬的大师级人物，写过不少点估计和假设检验方面的经典教材，遗憾的是于2009年与世长辞。

<span class="readmore"><a href="http://yixuan.cos.name/cn/2012/03/something-about-clt/" title="CLT的一些事">阅读全文——共2038字</a></span>]]></description>
			<content:encoded><![CDATA[<p>最近在读E. L. Lehmann的<em>Elements of Large-Sample Theory</em>一书。说起大样本和渐进理论，我一向是敬而远之，因为只要一碰到测度论和极限定理，我就不由自主地发怵。但这本书着实给了我很多惊喜，因为整本书几乎没有提到测度这两个字，简单翻阅了一下，感觉以数学分析的内容就可以看懂其中的大部分证明，于是甚感欣慰。大师的作品确实有其独到之处，读起来很少有晦涩难懂的地方，于是趁着现在时间相对宽松，也想在大样本理论这一块入个门。Lehmann也是一位令人尊敬的大师级人物，写过不少点估计和假设检验方面的经典教材，遗憾的是于2009年与世长辞。</p>
<p>今天看了跟中心极限定理有关的一些内容，从中了解到了不少之前没有考虑过的问题，而书中也解答了一些我一直留存的疑问，所以一并记录在这里。</p>
<h3>平均后的变异程度</h3>
<p>中心极限定理考察的对象是一列随机变量样本均值的分布。定理的表述有很多种，在这里只考虑最简单的情形：样本独立同分布。我们直觉会认为，样本均值会比原始的随机变量更稳定、更集中，最后成为一个方差逐渐趋于0的正态分布。经过一定的标准化处理，极限分布就是标准正态分布。但事实上，对变量进行平均，并不一定能减小分布的变异程度。例如，对于柯西分布来说，将两个独立的柯西分布进行平均，其结果仍然是一个同分布的柯西分布，所以相应地，均值的极限分布与单个的变量分布相同。</p>
<p>此外还有“越平均越变异”的分布。书中举的例子是标准正态分布的平方倒数，即<span class='MathJax_Preview'><img src='http://yixuan.cos.name/cn/wp-content/plugins/latex/cache/tex_13d4eb80230f0251892b03de6f8b9cad.gif' style='vertical-align: middle; border: none; background-color: #F7F7F7; ' class='tex' alt="X=1/Y^2" /></span>，其中<span class='MathJax_Preview'><img src='http://yixuan.cos.name/cn/wp-content/plugins/latex/cache/tex_70dd26f41a9e65695627576db56abeca.gif' style='vertical-align: middle; border: none; background-color: #F7F7F7; ' class='tex' alt="Y \sim N(0,1)" /></span>。对于这个分布来说，<span class='MathJax_Preview'><img src='http://yixuan.cos.name/cn/wp-content/plugins/latex/cache/tex_58c3d0d0ebe063b8eb10b3dcf9c10b0c.gif' style='vertical-align: middle; border: none; background-color: #F7F7F7; padding-bottom:1px;' class='tex' alt="\bar{X}" /></span>与<span class='MathJax_Preview'><img src='http://yixuan.cos.name/cn/wp-content/plugins/latex/cache/tex_ec58450c3118028976495b5d2901e8fc.gif' style='vertical-align: middle; border: none; background-color: #F7F7F7; padding-bottom:1px;' class='tex' alt="nX_1" /></span>是同分布的，所以样本量越大，均值的分布越分散。</p>
<p>下面的三组箱线图是对这三种分布的一个对比，横轴是样本量，纵轴是均值分布的箱线图。可以看出，对于正态分布，样本量越大，均值抽样分布的离散程度越小；对于柯西分布，离散程度几乎不变；对于第三种分布，很明显离散程度迅速变大。需要注意的是，绘制箱线图的数据只取了中间的一半，因此实际的分布会比箱线图所反映出的更加分散。<a href="http://yixuan.cos.name/cn/wp-content/uploads/2012/03/normal.png"><img class="aligncenter size-full wp-image-698" title="正态分布均值分布" src="http://yixuan.cos.name/cn/wp-content/uploads/2012/03/normal.png" alt="" width="450" height="450" /></a></p>
<p><a href="http://yixuan.cos.name/cn/wp-content/uploads/2012/03/cauchy.png"><img class="aligncenter size-full wp-image-697" title="柯西分布均值分布" src="http://yixuan.cos.name/cn/wp-content/uploads/2012/03/cauchy.png" alt="" width="450" height="450" /></a></p>
<p><a href="http://yixuan.cos.name/cn/wp-content/uploads/2012/03/type3.png"><img class="aligncenter size-full wp-image-699" title="正态分布平方倒数的均值分布" src="http://yixuan.cos.name/cn/wp-content/uploads/2012/03/type3.png" alt="" width="450" height="450" /></a></p>
<h3>样本量要多大才正态？</h3>
<p>如果我们记<span class='MathJax_Preview'><img src='http://yixuan.cos.name/cn/wp-content/plugins/latex/cache/tex_d09fb3e6e072f8a4df0badbf0ae9809a.gif' style='vertical-align: middle; border: none; background-color: #F7F7F7; ' class='tex' alt="\sqrt{n}(\bar{X}-\xi)/\sigma" /></span>的分布函数是<span class='MathJax_Preview'><img src='http://yixuan.cos.name/cn/wp-content/plugins/latex/cache/tex_41b9eab37fc45387ba3f46d5d46b8a02.gif' style='vertical-align: middle; border: none; background-color: #F7F7F7; ' class='tex' alt="G_n(x)" /></span>，那么中心极限定理说的其实就是当<span class='MathJax_Preview'><img src='http://yixuan.cos.name/cn/wp-content/plugins/latex/cache/tex_320054869872b88a5c9c90bccc5120d9.gif' style='vertical-align: middle; border: none; background-color: #F7F7F7; padding-bottom:2px;' class='tex' alt="n\rightarrow \infty" /></span>时，对任意的<span class='MathJax_Preview'><img src='http://yixuan.cos.name/cn/wp-content/plugins/latex/cache/tex_9dd4e461268c8034f5c8564e155c67a6.gif' style='vertical-align: middle; border: none; background-color: #F7F7F7; padding-bottom:2px;' class='tex' alt="x" /></span>有<span class='MathJax_Preview'><img src='http://yixuan.cos.name/cn/wp-content/plugins/latex/cache/tex_d1e0116e58c7eda64205e4e030218db9.gif' style='vertical-align: middle; border: none; background-color: #F7F7F7; ' class='tex' alt="G_n(x)\rightarrow \Phi(x)" /></span>。于是这里就出现了一个问题：到底n要多大<span class='MathJax_Preview'><img src='http://yixuan.cos.name/cn/wp-content/plugins/latex/cache/tex_41b9eab37fc45387ba3f46d5d46b8a02.gif' style='vertical-align: middle; border: none; background-color: #F7F7F7; ' class='tex' alt="G_n(x)" /></span>才与标准正态比较接近？</p>
<p>我一直以为这个问题是无解的，因为我感觉没有一个普世的准则对所有的分布都有效。直到今天才看到书中引用了一个定理，对这个问题进行了解答。定理是这样说的：</p>
<p>Berry-Esseen定理：假设<span class='MathJax_Preview'><img src='http://yixuan.cos.name/cn/wp-content/plugins/latex/cache/tex_5bd300b111e3e624a922a80a3276e69c.gif' style='vertical-align: middle; border: none; background-color: #F7F7F7; padding-bottom:1px;' class='tex' alt="X_1,\ldots, X_n" /></span>独立同分布（分布函数为F），且具有有限的三阶矩，那么存在一个与F无关的常数C，使得对任意的x，都有<p style='text-align:center;'><span class='MathJax_Preview'><img src='http://yixuan.cos.name/cn/wp-content/plugins/latex/cache/tex_e3f05ffcf715964e808c53f4eeefab04.gif' style='vertical-align: middle; border: none; background-color: #F7F7F7;' class='tex' alt="|G_n(x)-\Phi(x)|\le \frac{C}{\sqrt{n}}\frac{E|X_1-\xi|^3}{\sigma^3}" /></span></p></p>
<p>目前已知该定理对C=0.7975成立，对C&lt;0.4097不成立，但C可能的最小值依然是未知的。这个定理最强大的地方在于它对任意的x和任意的n都是成立的，所以不管x是否在变动，以及不管n有多大，你都可以给出当前均值分布与正态分布的绝对误差！从另一个方面说，只要你指定一个允许的误差，你就能计算出满足这个误差上界所需的样本量大小。</p>
<h3>因为对称，所以正态？</h3>
<p>益辉在<a href="http://cos.name/2010/05/from-clt-simulation-to-normal-distribution/" target="_blank">这篇文章</a>中指出了一个问题，那就是很多教科书在对中心极限定理举例时都喜欢拿对称的分布来做，而一旦原始分布不对称，往往要当样本量很大时均值分布才接近正态。当时我就想，是什么原因使得对称分布有这样的优越性？同样是直到今天，我才在书中找到了对这个疑惑的一个合理的解释。</p>
<p>注意到之前的Berry-Esseen定理中，等号右边是<span class='MathJax_Preview'><img src='http://yixuan.cos.name/cn/wp-content/plugins/latex/cache/tex_4e594b62a04a7b535e77cb37c57ab208.gif' style='vertical-align: middle; border: none; background-color: #F7F7F7; ' class='tex' alt="1/\sqrt{n}" /></span>，但既然是小于等于号，我们就不禁要问，收敛的速度有没有可能更快？要回答这个问题，我们就需要用到下面的这个定理：</p>
<p>假设<span class='MathJax_Preview'><img src='http://yixuan.cos.name/cn/wp-content/plugins/latex/cache/tex_5bd300b111e3e624a922a80a3276e69c.gif' style='vertical-align: middle; border: none; background-color: #F7F7F7; padding-bottom:1px;' class='tex' alt="X_1,\ldots, X_n" /></span>独立同分布（分布函数为F），具有有限的三阶矩，且不是一个<a href="http://www.encyclopediaofmath.org/index.php/Lattice_distribution" target="_blank">格点分布</a>，那么<p style='text-align:center;'><span class='MathJax_Preview'><img src='http://yixuan.cos.name/cn/wp-content/plugins/latex/cache/tex_7d715ab29862eaf2cff289105e2b8344.gif' style='vertical-align: middle; border: none; background-color: #F7F7F7;' class='tex' alt="G_n(x)=\Phi(x)+\frac{\mu_3}{6\sigma^3 \sqrt{n}}(1-x^2)\phi(x)+o(\frac{1}{\sqrt{n}})" /></span></p></p>
<p>其中<span class='MathJax_Preview'><img src='http://yixuan.cos.name/cn/wp-content/plugins/latex/cache/tex_6e3aa0bf7ca052bafb86da81fe22fb33.gif' style='vertical-align: middle; border: none; background-color: #F7F7F7; ' class='tex' alt="\mu_k=E(X-\xi)^k" /></span>表示k阶中心矩，上式中的第二项称为一阶Edgeworth正态近似修正。</p>
<p>这个定理的意思是，<span class='MathJax_Preview'><img src='http://yixuan.cos.name/cn/wp-content/plugins/latex/cache/tex_41b9eab37fc45387ba3f46d5d46b8a02.gif' style='vertical-align: middle; border: none; background-color: #F7F7F7; ' class='tex' alt="G_n(x)" /></span>趋近于<span class='MathJax_Preview'><img src='http://yixuan.cos.name/cn/wp-content/plugins/latex/cache/tex_9f6edaf8f9416cc1616e5a37c7f2e33b.gif' style='vertical-align: middle; border: none; background-color: #F7F7F7; ' class='tex' alt="\Phi(x)" /></span>的速度由两部分决定，一部分是<span class='MathJax_Preview'><img src='http://yixuan.cos.name/cn/wp-content/plugins/latex/cache/tex_4e594b62a04a7b535e77cb37c57ab208.gif' style='vertical-align: middle; border: none; background-color: #F7F7F7; ' class='tex' alt="1/\sqrt{n}" /></span>的速度，另一部分是比<span class='MathJax_Preview'><img src='http://yixuan.cos.name/cn/wp-content/plugins/latex/cache/tex_4e594b62a04a7b535e77cb37c57ab208.gif' style='vertical-align: middle; border: none; background-color: #F7F7F7; ' class='tex' alt="1/\sqrt{n}" /></span>更快的速度。而如果第一部分等于0，那么趋近的速度就可以更快。要达到这个目的，唯一的可能是让<span class='MathJax_Preview'><img src='http://yixuan.cos.name/cn/wp-content/plugins/latex/cache/tex_d3a6ac4f366c5d61ff4e4d4e1038a041.gif' style='vertical-align: middle; border: none; background-color: #F7F7F7; padding-bottom:2px;' class='tex' alt="\mu_3" /></span>等于0，而这恰恰意味着分布的偏度等于0，也就是说是对称的分布。至此，真相大白。</p>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://yixuan.cos.name/cn/2012/03/something-about-clt/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Julia来了</title>
		<link>http://yixuan.cos.name/cn/2012/02/julia-comes/</link>
		<comments>http://yixuan.cos.name/cn/2012/02/julia-comes/#comments</comments>
		<pubDate>Mon, 27 Feb 2012 16:18:31 +0000</pubDate>
		<dc:creator>yixuan</dc:creator>
				<category><![CDATA[R]]></category>
		<category><![CDATA[学习中]]></category>
		<category><![CDATA[Julia]]></category>
		<category><![CDATA[R语言]]></category>
		<category><![CDATA[并行]]></category>
		<category><![CDATA[有理数]]></category>
		<category><![CDATA[编程]]></category>
		<category><![CDATA[语言]]></category>
		<category><![CDATA[速度]]></category>

		<guid isPermaLink="false">http://yixuan.cos.name/cn/?p=680</guid>
		<description><![CDATA[In short, because we are greedy.



<span class="readmore"><a href="http://yixuan.cos.name/cn/2012/02/julia-comes/" title="Julia来了">阅读全文——共2107字</a></span>]]></description>
			<content:encoded><![CDATA[<blockquote>
<h2 style="text-align: center;"><em>In short, because we are greedy.</em></h2>
</blockquote>
<p>今天看到一篇文章，是<a href="http://sd.csdn.net/a/20120223/312315.html" target="_blank">介绍一门编程语言Julia的</a>。文章底下的评论有些扎眼，建议移步看它的<a href="http://julialang.org/blog/2012/02/why-we-created-julia/" target="_blank">英文原文</a>。文章的作者，同时也是这门语言的创始人之一，<a href="http://karpinski.org/" target="_blank">Stefan Karpinski</a>，目前是加州大学圣踏芭芭拉分校的一名博士生，但曾经在若干家企业工作过。他自称是一名数据科学家和应用数学家，最近发表的一篇论文题目叫作<em>Non-Parametric Discrete Mixture Model Recovery via NNMF</em>。看到这里我隐约感觉到，这门语言有可能是我感兴趣的。</p>
<p>为什么又来了一种语言？作者给出的回答就是第一段的那句话——因为我们贪得无厌。我们想要C的速度，想要Python的通用性，想要R的统计，想要Matlab的代数运算，想要很多很多以及更多。Julia是否能成为这样的一门编程语言我目前还无法预知，但它目前的一些特性确实让我眼前一亮。</p>
<h3>与R及Matlab相似的语法</h3>
<p>Julia的官方网站是<a href="http://julialang.org/" target="_blank">http://julialang.org/</a>，源代码放置在github上，地址是<a href="https://github.com/JuliaLang/julia" target="_blank">https://github.com/JuliaLang/julia</a>。从中可以看到一些示例的代码，典型的Matlab风格，但好在与R的差距并不是很大，像我依葫芦画瓢也能写出一些比较简单的代码来，比如下面就是用一个暴力的二重循环来生成一个1000*1000的均匀分布随机数矩阵，并计算所有元素之和。</p>
<p>Julia:</p>
<pre>function fun1j()
    m = zeros(1000, 1000)
    s = 0
    for i = 1:1000
        for j = 1:1000
            m[i, j] = rand()
            s = s + m[i, j]
        end
    end
    s
end</pre>
<p>与之等价的R程序是</p>
<p>R:</p>
<pre>fun1r = function() {
    m = matrix(0, 1000, 1000)
    s = 0
    for(i in 1:1000)
    {
        for(j in 1:1000)
        {
            m[i, j] = runif(1)
            s = s + m[i, j]
        }
    }
    s
}</pre>
<h3>速度</h3>
<p>速度应该是所有的编程语言都要考虑的内容。我们都知道R的痛点在哪儿，像上面的这个R程序照常理是要挨板子的，但我们还是看看它的运行时间。在我的电脑上（就不贴硬件参数了），运行时间大概为：</p>
<p>R:</p>
<pre>&gt; system.time(fun1r())
  用户  系统   流逝
5.769 0.004 5.782</pre>
<p>然后在Julia中，</p>
<p>Julia:</p>
<pre>julia&gt; @elapsed fun1j()
0.09904909133911133</pre>
<p>是的你没看错，只有不到0.1秒。</p>
<p>但这并不是一次有意义的对比，因为上述过程是可以被向量化的。我们用R来把这段程序优化一下：</p>
<p>R:</p>
<pre>fun1optr = function() {
    m = matrix(runif(1000 * 1000), 1000, 1000)
    sum(m)
}

&gt; system.time(fun1opt())
  用户  系统   流逝
0.048 0.000 0.051</pre>
<p>同样地，Julia也进行改写：</p>
<p>Julia:</p>
<pre>function fun1optj()
    m = rand(1000, 1000)
    sum(m)
end

julia&gt; @elapsed fun1optj()
0.008805990219116211</pre>
<p>相信结果已经很清楚了。</p>
<h3>有理数</h3>
<p>这可能只是一项很小的功能，但有些时候还是很方便的。Julia用<code>//</code>表示有理数除法，比如</p>
<pre>julia&gt; 1//2
1//2

julia&gt; 11//22
1//2

julia&gt; 987//654 + 12//34 * 56//78
84917//48178</pre>
<h3>并行</h3>
<p>Julia是一门刚诞生不久的语言，因此它尽可能地采用了最新的设计理念来应对当前的问题，其中对并行的支持是很重要的一点。</p>
<p>要让Julia使用多个CPU或多个核，需要在启动时加上相应的参数，例如下面的命令表示让Julia程序启用2个处理器：</p>
<pre>$ ./julia -p 2</pre>
<p>Julia提供了许多内置的函数来支持多核的运算，在此引用Julia文档中的一个例子，具体的信息可以在<a href="http://julialang.org/manual/parallel-computing/" target="_blank">这个页面</a>中获取。</p>
<pre>M = {rand(1000,1000) | i=1:10}
pmap(svd, M)</pre>
<p>以上程序就是对10个大矩阵进行并行的奇异值分解。</p>
<h3>接下来的事</h3>
<p>由于时间所限，这里举的都是非常基础的一些例子，而Julia的开发应该说也还是刚刚起步。目前Julia只支持类UNIX系统，如Linux和Mac，已经编译好的二进制文件可以在<a href="https://github.com/JuliaLang/julia/downloads" target="_blank">这里</a>下载。</p>
<p>Julia会不会成为R的一个良好替代，现在还都是未知，但有一点是肯定的，那就是无论一门语言多么优秀，其生命力永远是由用它的人决定的。R的成功，一部分源于其本身的设计，而更重要的是其背后存在一个强大的开源社区。这里有<a href="http://groups.google.com/group/julia-dev/browse_thread/thread/9f79ed4f8334830a" target="_blank">一个关于R与Julia的讨论</a>，其中Julia的另一名开发者Viral Shah说了一句特别有意思的话："What should julia do in order to provide an alternative to R? In my opinion, it is R's libraries and its community that define it - rather than the language design or its implementation."</p>
<p>R与Julia的未来发展会如何？我们拭目以待。</p>
]]></content:encoded>
			<wfw:commentRss>http://yixuan.cos.name/cn/2012/02/julia-comes/feed/</wfw:commentRss>
		<slash:comments>19</slash:comments>
		</item>
		<item>
		<title>用R读取Excel的新方法</title>
		<link>http://yixuan.cos.name/cn/2012/01/new-method-to-read-excel-file-in-r/</link>
		<comments>http://yixuan.cos.name/cn/2012/01/new-method-to-read-excel-file-in-r/#comments</comments>
		<pubDate>Wed, 18 Jan 2012 08:16:48 +0000</pubDate>
		<dc:creator>yixuan</dc:creator>
				<category><![CDATA[R]]></category>
		<category><![CDATA[学习中]]></category>
		<category><![CDATA[Excel]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[Office]]></category>
		<category><![CDATA[rJava]]></category>
		<category><![CDATA[xlsx]]></category>

		<guid isPermaLink="false">http://yixuan.cos.name/cn/?p=674</guid>
		<description><![CDATA[还在纠结用如何用R读取Excel的同学有福了。昨天逛CRAN的时候发现了一个xlsx包，它给出的介绍是可以读取、写入Excel 2007/2003文件并支持格式的设置。简单地来说，将Excel读取为数据框，以及将数据框写入为Excel文件都不是问题，而更加强大的是它能处理Excel中的格式，比如合并单元格，设置列的宽度，设置字体和颜色等等。

如果只需要基本的读取/写入操作，那么其中的read.xlsx()和write.xlsx()应该就能满足大部分的需求了，其用法也很简单，看看帮助文档就了解了。此外，还有两个相应的函数read.xlsx2()和write.xlsx2()，按作者的话说，这两个函数使用了不同的实现方式，效率上会更高一些。

<span class="readmore"><a href="http://yixuan.cos.name/cn/2012/01/new-method-to-read-excel-file-in-r/" title="用R读取Excel的新方法">阅读全文——共1724字</a></span>]]></description>
			<content:encoded><![CDATA[<p>还在纠结用如何用R读取Excel的同学有福了。昨天逛CRAN的时候发现了一个xlsx包，它给出的介绍是可以读取、写入Excel 2007/2003文件并支持格式的设置。简单地来说，将Excel读取为数据框，以及将数据框写入为Excel文件都不是问题，而更加强大的是它能处理Excel中的格式，比如合并单元格，设置列的宽度，设置字体和颜色等等。</p>
<p>如果只需要基本的读取/写入操作，那么其中的<code>read.xlsx()</code>和<code>write.xlsx()</code>应该就能满足大部分的需求了，其用法也很简单，看看帮助文档就了解了。此外，还有两个相应的函数<code>read.xlsx2()</code>和<code>write.xlsx2()</code>，按作者的话说，这两个函数使用了不同的实现方式，效率上会更高一些。</p>
<p>除了基本的读写操作之外，如之前所说，xlsx包还能进行格式方面的设置。下面是一个简单的例子，说明了如何创建工作簿和工作表，如何操作单元格等。感兴趣的朋友不妨运行一下下面的例子，看看最终的效果。</p>
<pre>ind = read.table(url("http://yixuan.cos.name/cn/wp-content/uploads/2012/01/ind.txt"),
                 sep = "\t");

library(xlsx);
# Create a new workbook
wb = createWorkbook();
# Create a new sheet with a name
sheet1 = createSheet(wb, "第一页");
# Set the zoom ratio when you open the Excel file
setZoom(sheet1, 50, 100);
# Set the width of columns
setColumnWidth(sheet1, 1:100, 2.8);

# Create rows
rows = createRow(sheet1, 1:40);
# Create cells for each row
cells = createCell(rows, 1:73);
# Merge the first row into one cell
addMergedRegion(sheet1, 1, 1, 1, 73);
# Create the style for title cell
title_cell_style = CellStyle(wb,
    alignment = Alignment(horizontal = "ALIGN_CENTER"),
    font = Font(wb, "blue", 50, isBold = TRUE));
# Create the style for black cells
black_cell_style = CellStyle(wb,
    border = Border(),
    fill = Fill(foregroundColor= "black"));
# Get the first row
first_row = getRows(sheet1, 1);
# Get the title cell from first row
title_cell = getCells(first_row, 1)[[1]];
# Set the value of the title cell
setCellValue(title_cell, "Read/Write Excel!");
# Set the style of the title cell
setCellStyle(title_cell, title_cell_style);
# Set the style of black cells
tmp = mapply(function(x, y) setCellStyle(cells[[x, y]], black_cell_style),
       ind[, 1] + 3, ind[, 2] + 5);
# Save the workbook into a file
saveWorkbook(wb, "test.xlsx");</pre>
<p>总的来说，xlsx包是我目前见过的功能最全的操作Excel的R包，它只依赖于Java环境和rJava、xlsxjars两个包，在多种平台下都能运行，局限是写操作只支持Excel 2007格式（*.xlsx），对于机器上只有MS Office 2003的人来说可能会有些不便。（LibreOffice和OpenOffice.org都可以打开Excel 2007文件）</p>
]]></content:encoded>
			<wfw:commentRss>http://yixuan.cos.name/cn/2012/01/new-method-to-read-excel-file-in-r/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
		<item>
		<title>手写识别，50行R代码</title>
		<link>http://yixuan.cos.name/cn/2011/12/handwriting-recognition-with-50-lines-r-code/</link>
		<comments>http://yixuan.cos.name/cn/2011/12/handwriting-recognition-with-50-lines-r-code/#comments</comments>
		<pubDate>Fri, 16 Dec 2011 15:33:39 +0000</pubDate>
		<dc:creator>yixuan</dc:creator>
				<category><![CDATA[R]]></category>
		<category><![CDATA[度量]]></category>
		<category><![CDATA[手写]]></category>
		<category><![CDATA[相似]]></category>
		<category><![CDATA[相关性]]></category>
		<category><![CDATA[识别]]></category>

		<guid isPermaLink="false">http://yixuan.cos.name/cn/?p=661</guid>
		<description><![CDATA[标题当然是唬人的，不过代码真的是50行正好（不算注释和空行啊），可以玩简单的数字识别。玩法很简单，先把附加的RData文件加载到R空间中（就是load("train.RData")这句），然后调用函数guess()，会打开一个空白的图形窗口。按住鼠标左键画一个0到9范围内的数字，然后右击鼠标确认，R会把猜测的结果输出出来。



<span class="readmore"><a href="http://yixuan.cos.name/cn/2011/12/handwriting-recognition-with-50-lines-r-code/" title="手写识别，50行R代码">阅读全文——共385字</a></span>]]></description>
			<content:encoded><![CDATA[<p>标题当然是唬人的，不过代码真的是50行正好（不算注释和空行啊），可以玩简单的数字识别。玩法很简单，先把附加的RData文件加载到R空间中（就是<code>load("train.RData")</code>这句），然后调用函数<code>guess()</code>，会打开一个空白的图形窗口。按住鼠标左键画一个0到9范围内的数字，然后右击鼠标确认，R会把猜测的结果输出出来。</p>

<div class="wp_codebox"><table><tr id="p6612"><td class="line_numbers"><pre>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
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
</pre></td><td class="code" id="p661code2"><pre class="rsplus" style="font-family:monospace;"><span style="color: #0000FF; font-weight: bold;">library</span><span style="color: #080;">&#40;</span><span style="color: #0000FF; font-weight: bold;">grid</span><span style="color: #080;">&#41;</span><span style="color: #080;">;</span>
getData <span style="color: #080;">=</span> <span style="color: #0000FF; font-weight: bold;">function</span><span style="color: #080;">&#40;</span><span style="color: #080;">&#41;</span>
<span style="color: #080;">&#123;</span>
    pushViewport<span style="color: #080;">&#40;</span>viewport<span style="color: #080;">&#40;</span><span style="color: #080;">&#41;</span><span style="color: #080;">&#41;</span><span style="color: #080;">;</span>
    grid.<span style="">rect</span><span style="color: #080;">&#40;</span><span style="color: #080;">&#41;</span><span style="color: #080;">;</span>
    px <span style="color: #080;">=</span> NULL<span style="color: #080;">;</span>
    py <span style="color: #080;">=</span> NULL<span style="color: #080;">;</span>
    mousedown <span style="color: #080;">=</span> <span style="color: #0000FF; font-weight: bold;">function</span><span style="color: #080;">&#40;</span>buttons, x, y<span style="color: #080;">&#41;</span>
    <span style="color: #080;">&#123;</span>
        <span style="color: #0000FF; font-weight: bold;">if</span><span style="color: #080;">&#40;</span>buttons <span style="color: #080;">==</span> <span style="color: #ff0000;">2</span><span style="color: #080;">&#41;</span> <span style="color: #0000FF; font-weight: bold;">return</span><span style="color: #080;">&#40;</span><span style="color: #0000FF; font-weight: bold;">invisible</span><span style="color: #080;">&#40;</span><span style="color: #ff0000;">1</span><span style="color: #080;">&#41;</span><span style="color: #080;">&#41;</span><span style="color: #080;">;</span>
        eventEnv$onMouseMove <span style="color: #080;">=</span> mousemove<span style="color: #080;">;</span>
        NULL
    <span style="color: #080;">&#125;</span>
    mousemove <span style="color: #080;">=</span> <span style="color: #0000FF; font-weight: bold;">function</span><span style="color: #080;">&#40;</span>buttons, x, y<span style="color: #080;">&#41;</span>
    <span style="color: #080;">&#123;</span>
        px <span style="color: #080;">&lt;&lt;-</span> <span style="color: #0000FF; font-weight: bold;">c</span><span style="color: #080;">&#40;</span>px, x<span style="color: #080;">&#41;</span><span style="color: #080;">;</span>
        py <span style="color: #080;">&lt;&lt;-</span> <span style="color: #0000FF; font-weight: bold;">c</span><span style="color: #080;">&#40;</span>py, y<span style="color: #080;">&#41;</span><span style="color: #080;">;</span>
        grid.<span style="">points</span><span style="color: #080;">&#40;</span>x, y<span style="color: #080;">&#41;</span><span style="color: #080;">;</span>
        NULL
    <span style="color: #080;">&#125;</span>
    mouseup <span style="color: #080;">=</span> <span style="color: #0000FF; font-weight: bold;">function</span><span style="color: #080;">&#40;</span>buttons, x, y<span style="color: #080;">&#41;</span> <span style="color: #080;">&#123;</span>    
        eventEnv$onMouseMove <span style="color: #080;">=</span> NULL<span style="color: #080;">;</span>
        NULL
    <span style="color: #080;">&#125;</span>
    setGraphicsEventHandlers<span style="color: #080;">&#40;</span>onMouseDown <span style="color: #080;">=</span> mousedown,
                             onMouseUp <span style="color: #080;">=</span> mouseup<span style="color: #080;">&#41;</span><span style="color: #080;">;</span>
    eventEnv <span style="color: #080;">=</span> getGraphicsEventEnv<span style="color: #080;">&#40;</span><span style="color: #080;">&#41;</span><span style="color: #080;">;</span>
    <span style="color: #0000FF; font-weight: bold;">cat</span><span style="color: #080;">&#40;</span><span style="color: #ff0000;">&quot;Click down left mouse button and drag to draw the number,
		right click to finish.<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #080;">&#41;</span><span style="color: #080;">;</span>
    <span style="color: #0000FF; font-weight: bold;">getGraphicsEvent</span><span style="color: #080;">&#40;</span><span style="color: #080;">&#41;</span><span style="color: #080;">;</span>
    <span style="color: #0000FF; font-weight: bold;">dev.<span style="">off</span></span><span style="color: #080;">&#40;</span><span style="color: #080;">&#41;</span><span style="color: #080;">;</span>
    s <span style="color: #080;">=</span> <span style="color: #0000FF; font-weight: bold;">seq</span><span style="color: #080;">&#40;</span><span style="color: #ff0000;">0</span>, <span style="color: #ff0000;">1</span>, length.<span style="">out</span> <span style="color: #080;">=</span> <span style="color: #0000FF; font-weight: bold;">length</span><span style="color: #080;">&#40;</span>px<span style="color: #080;">&#41;</span><span style="color: #080;">&#41;</span><span style="color: #080;">;</span>
    spx <span style="color: #080;">=</span> <span style="color: #0000FF; font-weight: bold;">spline</span><span style="color: #080;">&#40;</span>s, px, n <span style="color: #080;">=</span> <span style="color: #ff0000;">500</span><span style="color: #080;">&#41;</span>$y<span style="color: #080;">;</span>
    spy <span style="color: #080;">=</span> <span style="color: #0000FF; font-weight: bold;">spline</span><span style="color: #080;">&#40;</span>s, py, n <span style="color: #080;">=</span> <span style="color: #ff0000;">500</span><span style="color: #080;">&#41;</span>$y<span style="color: #080;">;</span>
    <span style="color: #0000FF; font-weight: bold;">return</span><span style="color: #080;">&#40;</span><span style="color: #0000FF; font-weight: bold;">cbind</span><span style="color: #080;">&#40;</span>spx, spy<span style="color: #080;">&#41;</span><span style="color: #080;">&#41;</span><span style="color: #080;">;</span>
<span style="color: #080;">&#125;</span>
&nbsp;
traceCorr <span style="color: #080;">=</span> <span style="color: #0000FF; font-weight: bold;">function</span><span style="color: #080;">&#40;</span>dat1, dat2<span style="color: #080;">&#41;</span>
<span style="color: #080;">&#123;</span>
    <span style="color: #0000FF; font-weight: bold;">cor</span><span style="color: #080;">&#40;</span>dat1<span style="color: #080;">&#91;</span>, <span style="color: #ff0000;">1</span><span style="color: #080;">&#93;</span>, dat2<span style="color: #080;">&#91;</span>, <span style="color: #ff0000;">1</span><span style="color: #080;">&#93;</span><span style="color: #080;">&#41;</span> <span style="color: #080;">+</span> <span style="color: #0000FF; font-weight: bold;">cor</span><span style="color: #080;">&#40;</span>dat1<span style="color: #080;">&#91;</span>, <span style="color: #ff0000;">2</span><span style="color: #080;">&#93;</span>, dat2<span style="color: #080;">&#91;</span>, <span style="color: #ff0000;">2</span><span style="color: #080;">&#93;</span><span style="color: #080;">&#41;</span><span style="color: #080;">;</span>
<span style="color: #080;">&#125;</span>
&nbsp;
<span style="color: #228B22;"># recogTrain = list();</span>
<span style="color: #228B22;"># for(i in 1:10)</span>
<span style="color: #228B22;"># {</span>
<span style="color: #228B22;">#     recogTrain[[i]] = getData();</span>
<span style="color: #228B22;"># }</span>
<span style="color: #228B22;"># save(recogTrain, file = &quot;train.RData&quot;);</span>
&nbsp;
<span style="color: #0000FF; font-weight: bold;">load</span><span style="color: #080;">&#40;</span><span style="color: #ff0000;">&quot;train.RData&quot;</span><span style="color: #080;">&#41;</span><span style="color: #080;">;</span>
guess <span style="color: #080;">=</span> <span style="color: #0000FF; font-weight: bold;">function</span><span style="color: #080;">&#40;</span>verbose <span style="color: #080;">=</span> FALSE<span style="color: #080;">&#41;</span>
<span style="color: #080;">&#123;</span>
    test <span style="color: #080;">=</span> getData<span style="color: #080;">&#40;</span><span style="color: #080;">&#41;</span><span style="color: #080;">;</span>
    coefs <span style="color: #080;">=</span> <span style="color: #0000FF; font-weight: bold;">sapply</span><span style="color: #080;">&#40;</span>recogTrain, traceCorr, dat2 <span style="color: #080;">=</span> test<span style="color: #080;">&#41;</span><span style="color: #080;">;</span>
    num <span style="color: #080;">=</span> <span style="color: #0000FF; font-weight: bold;">which.<span style="">max</span></span><span style="color: #080;">&#40;</span>coefs<span style="color: #080;">&#41;</span><span style="color: #080;">;</span>
    <span style="color: #0000FF; font-weight: bold;">if</span><span style="color: #080;">&#40;</span>num <span style="color: #080;">==</span> <span style="color: #ff0000;">10</span><span style="color: #080;">&#41;</span> num <span style="color: #080;">=</span> <span style="color: #ff0000;">0</span><span style="color: #080;">;</span>
    <span style="color: #0000FF; font-weight: bold;">if</span><span style="color: #080;">&#40;</span>verbose<span style="color: #080;">&#41;</span> <span style="color: #0000FF; font-weight: bold;">print</span><span style="color: #080;">&#40;</span>coefs<span style="color: #080;">&#41;</span><span style="color: #080;">;</span>
    <span style="color: #0000FF; font-weight: bold;">cat</span><span style="color: #080;">&#40;</span><span style="color: #ff0000;">&quot;I guess what you have input is &quot;</span>, num, <span style="color: #ff0000;">&quot;.<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span>, sep <span style="color: #080;">=</span> <span style="color: #ff0000;">&quot;&quot;</span><span style="color: #080;">&#41;</span><span style="color: #080;">;</span>
<span style="color: #080;">&#125;</span></pre></td></tr></table></div>

<p>有玩成功了的同志在评论里吼一嗓子啊（貌似4很难识别对），谢谢。</p>
<span class="download">下载：<a href="http://yixuan.cos.name/cn/wp-content/uploads/2011/12/HandwritingRecognition.zip" target="_blank">train.RData</a></span>
]]></content:encoded>
			<wfw:commentRss>http://yixuan.cos.name/cn/2011/12/handwriting-recognition-with-50-lines-r-code/feed/</wfw:commentRss>
		<slash:comments>17</slash:comments>
		</item>
		<item>
		<title>一些澄清，致歉，和广告</title>
		<link>http://yixuan.cos.name/cn/2011/12/some-notices/</link>
		<comments>http://yixuan.cos.name/cn/2011/12/some-notices/#comments</comments>
		<pubDate>Thu, 01 Dec 2011 06:32:42 +0000</pubDate>
		<dc:creator>yixuan</dc:creator>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[生活]]></category>
		<category><![CDATA[R语言]]></category>
		<category><![CDATA[宋词]]></category>
		<category><![CDATA[果壳网]]></category>
		<category><![CDATA[统计]]></category>
		<category><![CDATA[统计之都]]></category>
		<category><![CDATA[致歉]]></category>
		<category><![CDATA[词频]]></category>

		<guid isPermaLink="false">http://yixuan.cos.name/cn/?p=654</guid>
		<description><![CDATA[事情的源起是果壳的这个帖子：http://www.guokr.com/post/74433。帖子中转载了我之前写的一篇博客，主要内容是对宋词进行了一些词频的统计，然后各位网友纷纷发挥了自己的创造力，利用这些高频词语来“写词”。看到大家热情这么高我当然非常高兴，因为这至少说明我做的一些东西是有意义的。我学的专业是统计和精算，平时会和各种类型的数据打交道，之前写那篇博文也是出于兴趣，想利用学到的专业知识来对一些实际的问题进行分析。

而我没有意料到的是大家对这件事的关注度会这么高，以至于果壳网把那篇帖子推到了首页，甚至还有一些朋友说希望能有进一步的采访等等，这都是我始料未及的。对此我觉得有必要对其中的一些细节进行解释，以避免不必要的误会。

<span class="readmore"><a href="http://yixuan.cos.name/cn/2011/12/some-notices/" title="一些澄清，致歉，和广告">阅读全文——共2200字</a></span>]]></description>
			<content:encoded><![CDATA[<p>事情的源起是果壳的这个帖子：<a href="http://www.guokr.com/post/74433" target="_blank">http://www.guokr.com/post/74433</a>。帖子中转载了我之前写的一篇博客，主要内容是对宋词进行了一些词频的统计，然后各位网友纷纷发挥了自己的创造力，利用这些高频词语来“写词”。看到大家热情这么高我当然非常高兴，因为这至少说明我做的一些东西是有意义的。我学的专业是统计和精算，平时会和各种类型的数据打交道，之前写那篇博文也是出于兴趣，想利用学到的专业知识来对一些实际的问题进行分析。</p>
<p>而我没有意料到的是大家对这件事的关注度会这么高，以至于果壳网把那篇帖子推到了首页，甚至还有一些朋友说希望能有进一步的采访等等，这都是我始料未及的。对此我觉得有必要对其中的一些细节进行解释，以避免不必要的误会。</p>
<p>首先，很多人肯定都会提到“自动作词机”，就比如拿生日、QQ、物理常数等套用里面的排序来“写词”。但我想说的是，这其实不是我的创意，也不是我写那篇博文的初衷。如果大家看过果壳的那篇帖子，就会发现大家开始“狂欢”是因为39楼“达芬奇的鸡蛋”的创意，而词频统计本身并没有任何特殊之处。事实上，大家可能听说过“文本挖掘”这个名词，它就是对文本数据进行分析，来得到有用的结论。文本挖掘是个很复杂的过程，牵涉到分词、词频统计、特征选择、聚类等等，如果大家对这一块内容有所了解的话，就会知道词频统计是一个很平凡的过程。</p>
<p>关于自动作词机，这其实也是一个很早就有的概念，甚至网上流传，刘慈欣老师在90年代就编写过类似的软件。而就宋词来说，也有相应的文章进行过讨论，比如《一种宋词自动生成的遗传算法及其机器实现》，感兴趣的朋友可以到<a href="http://wenku.baidu.com/view/bf7c8a00b52acfc789ebc9be.html" target="_blank">http://wenku.baidu.com/view/bf7c8a00b52acfc789ebc9be.html</a>进行浏览。</p>
<p>第二个大家可能觉得比较新鲜的地方是利用理科的知识来研究文学的内容。我需要说的是，这个其实也很常见，而且可以追溯到更久以前，一个典型的例子是李贤平老师的《&lt;红楼梦&gt;成书新说》，浏览的地址是<a href="http://www.docin.com/p-277121750.html" target="_blank">http://www.docin.com/p-277121750.html</a>。事实上，有很多学者都尝试过对《红楼梦》的词频进行分析，以试图找出前八十回和后四十回的差异。</p>
<p>第三点我需要说的是，可能有些朋友觉得我得到宋词的词频是一件技术含量很高的活儿，但从技术层面上来讲，我做的那些东西也并无任何高级之处（当然需要有一些编程经验）。我个人对R语言比较感兴趣，所以这些分析都是用R语言实现的。但对于其它的编程语言或统计软件，要实现的话都是有章可循的。果壳的帖子中25楼的朋友就给出了一个很好的解决方案。事实上，目前已经有不少专门进行文本挖掘的软件，比如R语言的rmmseg4j软件包等，如果有对技术感兴趣的朋友，可以参考这个帖子：<a href="http://cos.name/cn/topic/105321" target="_blank">http://cos.name/cn/topic/105321</a>。</p>
<p>所以上面说的这些东西中心思想是什么呢？意思就是说，无论是想法、研究还是技术，其实很早以前就有人做过了，太阳底下并无新鲜事，大家需要知道这背后的一些事实。</p>
<p>然后是标题的第二部分。今天有一些朋友发邮件或是给我博客留言，说希望能有一些采访，我把我的想法一并在这里说了吧。首先，真的非常感谢几位对这个话题的关注以及对我的肯定，我自己非常感激。但非常遗憾，我想我还不能接受。一方面是我之前说的，有几位朋友觉得是我弄出的自动写诗机，但实际上不是的，而且我自己也没有打算往这一方向去做。另一方面就是最近我的学业压力比较大，没有太多的精力投入在这些事情上。我这个博客的目的，是记录自己学习的过程，同时如果可能的话，希望我做的东西能引起大家对统计学和R语言的兴趣。至于其他的方面，可能并不是我考虑的初衷。</p>
<p>如果还有朋友仍然对这一话题有兴趣，那么请看下面的广告。</p>
<p>========================趁着还没到2012年插播一段广告========================</p>
<p>好了，我不想把这篇博文弄得和紧张兮兮的新闻发布会一样，而且我也还远没到那个层次。请大家抬头看一下我博客的域名：cos.name，这个域名是属于<a href="http://cos.name" target="_blank">统计之都网站</a>的。统计之都（Capital of Statistics）是一个由志愿者团队维护的非赢利网站，旨在推进国内统计学的发展和应用。我目前是统计之都的管理员之一，而在这个团队中还有很多厉害的牛人，比如网站的创始人<a href="http://yihui.name/cn" target="_blank">谢益辉大师兄</a>。更多的成员可以在网站的<a href="http://cos.name/about" target="_blank">关于页面</a>中找到，他们中的每一个都有自己擅长的领域，都是很棒的人。</p>
<p>之前大家普遍转载的是我个人博客中的<a href="http://yixuan.cos.name/cn/2011/03/text-mining-of-song-poems/" target="_blank">《东风何处是人间》</a>，但我其实对数据和结果都进行了一些修订，发在了统计之都网站上，文章的标题是<a href="http://cos.name/2011/03/statistics-in-chinese-song-poem-1/" target="_blank">《统计词话（一）》</a>。在果壳的帖子里面有朋友对《全唐诗》的词频也感兴趣，而这部分也已经<a href="http://yixf.name/2011/03/21/%E5%B1%B1%E4%BA%BA%E4%BD%95%E5%A4%84%E5%90%9B%E4%B8%8D%E8%A7%81%EF%BC%9F%E4%B8%9C%E9%A3%8E%E4%B8%80%E8%8A%B1%E5%80%9A%E9%98%91%E5%B9%B2%EF%BC%81-%E2%80%94%E2%80%94%E3%80%8A%E5%85%A8%E5%94%90%E8%AF%97/" target="_blank">有网友做过了</a>，就在<a href="http://cos.name/2011/03/statistics-in-chinese-song-poem-1/" target="_blank">《统计词话（一）》</a>的评论中，那位网友的博客地址是<a href="http://yixf.name" target="_blank">http://yixf.name</a>。</p>
<p>统计之都中还有更多有意思的文章，比如<a href="http://cos.name/2011/07/we-never-know-randomness/" target="_blank">对上帝他老人家的一些思考</a>，以及<a href="http://cos.name/2011/04/exploring-renren-social-network/" target="_blank">yinyin网的社会网络分析</a>等。《统计词话》在计划中还会有续篇，我会把我一些新的想法继续发在网站上。</p>
<p>总而言之，我相信真正有生命力也最值得关注的是统计学本身，而不仅仅是统计词频或者作诗这一个小的方面。</p>
<p>========================趁着还没到2012年插播一段广告========================</p>
<p>嗯，就这么多，最后还是要谢谢大家！</p>
]]></content:encoded>
			<wfw:commentRss>http://yixuan.cos.name/cn/2011/12/some-notices/feed/</wfw:commentRss>
		<slash:comments>35</slash:comments>
		</item>
		<item>
		<title>近日见闻</title>
		<link>http://yixuan.cos.name/cn/2011/11/recent-life/</link>
		<comments>http://yixuan.cos.name/cn/2011/11/recent-life/#comments</comments>
		<pubDate>Tue, 15 Nov 2011 02:13:58 +0000</pubDate>
		<dc:creator>yixuan</dc:creator>
				<category><![CDATA[生活]]></category>
		<category><![CDATA[R语言会议，聚散，相逢]]></category>

		<guid isPermaLink="false">http://yixuan.cos.name/cn/?p=649</guid>
		<description><![CDATA[最近这个月是在各种奔波忙碌中度过的。各种考试，报告，赶场，一度有抓狂的感觉。不过好在都熬过来了，现在面临的是新的战斗。至于这段时间到底值还是不值，或许只有以后才清楚。

上周五给数据挖掘小组做了关于大型计算的报告，讲了讲R调用数据库、R对象缓存和并行计算等方面的内容。讲完之后发现自己演讲的能力还是有待提高。充分的准备是一方面，与观众的互动是一方面，总体来说还是要提高自身的素质。

<span class="readmore"><a href="http://yixuan.cos.name/cn/2011/11/recent-life/" title="近日见闻">阅读全文——共910字</a></span>]]></description>
			<content:encoded><![CDATA[<p>最近这个月是在各种奔波忙碌中度过的。各种考试，报告，赶场，一度有抓狂的感觉。不过好在都熬过来了，现在面临的是新的战斗。至于这段时间到底值还是不值，或许只有以后才清楚。</p>
<p>上周五给数据挖掘小组做了关于大型计算的报告，讲了讲R调用数据库、R对象缓存和并行计算等方面的内容。讲完之后发现自己演讲的能力还是有待提高。充分的准备是一方面，与观众的互动是一方面，总体来说还是要提高自身的素质。</p>
<p>周六和云熹踏上前往上海的高铁，300km/h，音速的四分之一，一时间恍如隔梦。路上看掉半本《追风筝的人》，脑中一片眩晕，我果然还是对苦难的描写没有抵抗力。到宾馆时已经快九点，开始为第二天的报告抱佛脚。之后见到涛涛、丽云、一硕、龙哥、舰哥，一群人挤在房间里，很有家的感觉。</p>
<p>第二天的报告，见识了中国最年轻的博导，不禁感慨人和人之间还是有差距的。当然在师姐的气场下，周老师和“老牟”都成了师姐的信徒——这当然是玩笑话。轮到我们讲时，已经快到12点，好在整体比较紧凑，没有背负太多的罪名。到了下午，会议全部结束时，所有人都松了口气，在此必须要对会务组表示由衷的感谢。因为自己经历过，所以清楚办会的辛苦。之前见到丽云时，我们都说她脸色不太好，想是好几天没有好好休息了吧。而翔兄舰兄作为历届的主席，个中辛苦也只有他们自己清楚。</p>
<p>晚上李舰师兄和林祯舜师兄请我们去酒吧喝酒聊天，露天的座椅，微凉的夜色，酒醉微醺，谈笑风生。每每听及师兄回忆人大的旧事，心中便是一阵神往，这感觉之前也曾有过，那是在读益辉05年的博客。</p>
<p>第二日早上睡得昏昏沉沉，却也到了再见的时分。太云说搞不好我和涛涛十年之后才能再见，我骂他这不咒我们吗。不过真的到了告别的那一刻，才发现一种失落感涌上心头。我跟师姐说，我现在特别怕听到“以后还有机会再见”之类的话，因为我知道很多机会都是在还有机会中消失的。这两天身心俱疲，以至于整日板着张脸，我也不想这样，所以只能在这里跟各位赔个不是了。有时并非不想接受朋友的好意，实是无福消受太多。</p>
<p>大家来来往往，聚聚散散，本也是常态了。不过掐指数来，范兄半年没见了，益辉菁菁一年半，小楠两年。真心希望明年我也离开之时，大家又能齐聚一堂，指点江山。</p>
<p>相逢的人会再相逢。</p>
]]></content:encoded>
			<wfw:commentRss>http://yixuan.cos.name/cn/2011/11/recent-life/feed/</wfw:commentRss>
		<slash:comments>10</slash:comments>
		</item>
		<item>
		<title>rationalfun</title>
		<link>http://yixuan.cos.name/cn/2011/10/rationalfun/</link>
		<comments>http://yixuan.cos.name/cn/2011/10/rationalfun/#comments</comments>
		<pubDate>Mon, 31 Oct 2011 13:53:26 +0000</pubDate>
		<dc:creator>yixuan</dc:creator>
				<category><![CDATA[R]]></category>
		<category><![CDATA[学习中]]></category>
		<category><![CDATA[有理函数]]></category>
		<category><![CDATA[积分]]></category>
		<category><![CDATA[论文]]></category>
		<category><![CDATA[软件包]]></category>
		<category><![CDATA[黑魔法]]></category>

		<guid isPermaLink="false">http://yixuan.cos.name/cn/?p=640</guid>
		<description><![CDATA[刚刚向CRAN提交了一个新包，名字叫rationalfun。这个包顾名思义，是处理有理函数的。毕业论文里面有一块内容是要求有理函数的积分，数学分析课本中给出的方法是部分分式，但这个在程序中不好实现；而如果用数值积分，则速度又太慢，不划算。后来费尽千辛万苦（这里是夸张的修辞手法），终于在一篇计算机的论文中找到了解决的办法，于是索性把算法写成了包，也就是rationalfun。本来想把论文放到博客上的，但听说要坐牢，心想还是算了。论文的信息是

T. N. Subramaniam, and Donald E. G. Malm, How to Integrate Rational Functions, The American Mathematical Monthly, Vol. 99, No.8 (1992), 762-772.

<span class="readmore"><a href="http://yixuan.cos.name/cn/2011/10/rationalfun/" title="rationalfun">阅读全文——共1217字</a></span>]]></description>
			<content:encoded><![CDATA[<p>刚刚向CRAN提交了一个新包，名字叫<code>rationalfun</code>。这个包顾名思义，是处理有理函数的。毕业论文里面有一块内容是要求有理函数的积分，数学分析课本中给出的方法是部分分式，但这个在程序中不好实现；而如果用数值积分，则速度又太慢，不划算。后来费尽千辛万苦（这里是夸张的修辞手法），终于在一篇计算机的论文中找到了解决的办法，于是索性把算法写成了包，也就是<code>rationalfun</code>。本来想把论文放到博客上的，<a href="http://www.fanren8.com/read.php?tid=31536" target="_blank">但听说要坐牢</a>，心想还是算了。论文的信息是</p>
<blockquote><p>T. N. Subramaniam, and Donald E. G. Malm, How to Integrate Rational Functions, <em>The American Mathematical Monthly</em>, Vol. 99, No.8 (1992), 762-772.</p></blockquote>
<p>目前这个包还很小很天真，能进行的运算无非是加减乘除乘方导数和积分，下面的代码差不多概括了主要的用法：</p>

<div class="wp_codebox"><table><tr id="p6405"><td class="line_numbers"><pre>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
31
32
</pre></td><td class="code" id="p640code5"><pre class="rsplus" style="font-family:monospace;"><span style="color: #080;">&gt;</span> r1 <span style="color: #080;">=</span> rationalfun<span style="color: #080;">&#40;</span><span style="color: #0000FF; font-weight: bold;">c</span><span style="color: #080;">&#40;</span><span style="color: #ff0000;">1</span>, <span style="color: #ff0000;">1</span><span style="color: #080;">&#41;</span>, <span style="color: #0000FF; font-weight: bold;">c</span><span style="color: #080;">&#40;</span><span style="color: #ff0000;">1</span>, <span style="color: #0000FF; font-weight: bold;">rep</span><span style="color: #080;">&#40;</span><span style="color: #ff0000;">0</span>, <span style="color: #ff0000;">8</span><span style="color: #080;">&#41;</span>, <span style="color: #ff0000;">1</span><span style="color: #080;">&#41;</span><span style="color: #080;">&#41;</span><span style="color: #080;">;</span>
<span style="color: #080;">&gt;</span> r1<span style="color: #080;">;</span>
 <span style="color: #ff0000;">1</span> <span style="color: #080;">+</span> x
<span style="color: #080;">-------</span>
<span style="color: #ff0000;">1</span> <span style="color: #080;">+</span> x<span style="color: #080;">^</span><span style="color: #ff0000;">9</span>
<span style="color: #080;">&gt;</span> simplify<span style="color: #080;">&#40;</span>r1<span style="color: #080;">&#41;</span><span style="color: #080;">;</span>
                       <span style="color: #ff0000;">1</span>
<span style="color: #080;">-----------------------------------------------</span>
<span style="color: #ff0000;">1</span> <span style="color: #080;">-</span> x <span style="color: #080;">+</span> x<span style="color: #080;">^</span><span style="color: #ff0000;">2</span> <span style="color: #080;">-</span> x<span style="color: #080;">^</span><span style="color: #ff0000;">3</span> <span style="color: #080;">+</span> x<span style="color: #080;">^</span><span style="color: #ff0000;">4</span> <span style="color: #080;">-</span> x<span style="color: #080;">^</span><span style="color: #ff0000;">5</span> <span style="color: #080;">+</span> x<span style="color: #080;">^</span><span style="color: #ff0000;">6</span> <span style="color: #080;">-</span> x<span style="color: #080;">^</span><span style="color: #ff0000;">7</span> <span style="color: #080;">+</span> x<span style="color: #080;">^</span><span style="color: #ff0000;">8</span>
<span style="color: #080;">&gt;</span> r2 <span style="color: #080;">=</span> rationalfun<span style="color: #080;">&#40;</span><span style="color: #0000FF; font-weight: bold;">c</span><span style="color: #080;">&#40;</span><span style="color: #ff0000;">1</span>, <span style="color: #ff0000;">1</span><span style="color: #080;">&#41;</span>, <span style="color: #0000FF; font-weight: bold;">c</span><span style="color: #080;">&#40;</span><span style="color: #ff0000;">1</span>, <span style="color: #0000FF; font-weight: bold;">rep</span><span style="color: #080;">&#40;</span><span style="color: #ff0000;">0</span>, <span style="color: #ff0000;">6</span><span style="color: #080;">&#41;</span>, <span style="color: #ff0000;">1</span><span style="color: #080;">&#41;</span><span style="color: #080;">&#41;</span><span style="color: #080;">;</span>
<span style="color: #080;">&gt;</span> r3 <span style="color: #080;">=</span> rationalfun<span style="color: #080;">&#40;</span><span style="color: #0000FF; font-weight: bold;">c</span><span style="color: #080;">&#40;</span><span style="color: #ff0000;">0</span>, <span style="color: #ff0000;">1</span><span style="color: #080;">&#41;</span>, <span style="color: #0000FF; font-weight: bold;">c</span><span style="color: #080;">&#40;</span><span style="color: #ff0000;">1</span>, <span style="color: #0000FF; font-weight: bold;">rep</span><span style="color: #080;">&#40;</span><span style="color: #ff0000;">0</span>, <span style="color: #ff0000;">6</span><span style="color: #080;">&#41;</span>, <span style="color: #ff0000;">1</span><span style="color: #080;">&#41;</span><span style="color: #080;">&#41;</span><span style="color: #080;">;</span>
<span style="color: #080;">&gt;</span> r4 <span style="color: #080;">=</span> r2 <span style="color: #080;">-</span> r3<span style="color: #080;">;</span>
<span style="color: #080;">&gt;</span> r4
   <span style="color: #ff0000;">1</span>
<span style="color: #080;">-------</span>
<span style="color: #ff0000;">1</span> <span style="color: #080;">+</span> x<span style="color: #080;">^</span><span style="color: #ff0000;">7</span>
<span style="color: #080;">&gt;</span> r4<span style="color: #080;">^</span><span style="color: #ff0000;">2</span>
       <span style="color: #ff0000;">1</span>
<span style="color: #080;">----------------</span>
<span style="color: #ff0000;">1</span> <span style="color: #080;">+</span> <span style="color: #ff0000;">2</span><span style="color: #080;">*</span>x<span style="color: #080;">^</span><span style="color: #ff0000;">7</span> <span style="color: #080;">+</span> x<span style="color: #080;">^</span><span style="color: #ff0000;">14</span>
<span style="color: #080;">&gt;</span> <span style="color: #0000FF; font-weight: bold;">deriv</span><span style="color: #080;">&#40;</span>r4<span style="color: #080;">&#41;</span>
     <span style="color: #080;">-</span><span style="color: #ff0000;">7</span><span style="color: #080;">*</span>x<span style="color: #080;">^</span><span style="color: #ff0000;">6</span>
<span style="color: #080;">----------------</span>
<span style="color: #ff0000;">1</span> <span style="color: #080;">+</span> <span style="color: #ff0000;">2</span><span style="color: #080;">*</span>x<span style="color: #080;">^</span><span style="color: #ff0000;">7</span> <span style="color: #080;">+</span> x<span style="color: #080;">^</span><span style="color: #ff0000;">14</span>
<span style="color: #080;">&gt;</span> integral<span style="color: #080;">&#40;</span>r4<span style="color: #080;">&#41;</span>
<span style="color: #ff0000;">0.142857142857143</span> <span style="color: #080;">*</span> <span style="color: #0000FF; font-weight: bold;">log</span><span style="color: #080;">&#40;</span><span style="color: #0000FF; font-weight: bold;">abs</span><span style="color: #080;">&#40;</span>x <span style="color: #080;">+</span> <span style="color: #ff0000;">1</span><span style="color: #080;">&#41;</span><span style="color: #080;">&#41;</span> <span style="color: #080;">+</span> <span style="color: #ff0000;">0.0890699716941046</span> <span style="color: #080;">*</span> <span style="color: #0000FF; font-weight: bold;">log</span><span style="color: #080;">&#40;</span>x<span style="color: #080;">^</span><span style="color: #ff0000;">2</span> <span style="color: #080;">+</span>
    <span style="color: #ff0000;">1.24697960371747</span> <span style="color: #080;">*</span> x <span style="color: #080;">+</span> <span style="color: #ff0000;">1</span><span style="color: #080;">&#41;</span> <span style="color: #080;">+</span> <span style="color: #ff0000;">0.223380423562293</span> <span style="color: #080;">*</span> <span style="color: #0000FF; font-weight: bold;">atan</span><span style="color: #080;">&#40;</span><span style="color: #080;">&#40;</span>x <span style="color: #080;">+</span>
    <span style="color: #ff0000;">0.623489801858734</span><span style="color: #080;">&#41;</span><span style="color: #080;">/</span><span style="color: #ff0000;">0.78183148246803</span><span style="color: #080;">&#41;</span> <span style="color: #080;">-</span> <span style="color: #ff0000;">0.031788704850902</span> <span style="color: #080;">*</span>
    <span style="color: #0000FF; font-weight: bold;">log</span><span style="color: #080;">&#40;</span>x<span style="color: #080;">^</span><span style="color: #ff0000;">2</span> <span style="color: #080;">-</span> <span style="color: #ff0000;">0.445041867912629</span> <span style="color: #080;">*</span> x <span style="color: #080;">+</span> <span style="color: #ff0000;">1</span><span style="color: #080;">&#41;</span> <span style="color: #080;">+</span> <span style="color: #ff0000;">0.27855083205195</span> <span style="color: #080;">*</span>
    <span style="color: #0000FF; font-weight: bold;">atan</span><span style="color: #080;">&#40;</span><span style="color: #080;">&#40;</span>x <span style="color: #080;">-</span> <span style="color: #ff0000;">0.222520933956314</span><span style="color: #080;">&#41;</span><span style="color: #080;">/</span><span style="color: #ff0000;">0.974927912181824</span><span style="color: #080;">&#41;</span> <span style="color: #080;">-</span> <span style="color: #ff0000;">0.128709838271774</span> <span style="color: #080;">*</span>
    <span style="color: #0000FF; font-weight: bold;">log</span><span style="color: #080;">&#40;</span>x<span style="color: #080;">^</span><span style="color: #ff0000;">2</span> <span style="color: #080;">-</span> <span style="color: #ff0000;">1.80193773580484</span> <span style="color: #080;">*</span> x <span style="color: #080;">+</span> <span style="color: #ff0000;">1</span><span style="color: #080;">&#41;</span> <span style="color: #080;">+</span> <span style="color: #ff0000;">0.123966782605016</span> <span style="color: #080;">*</span>
    <span style="color: #0000FF; font-weight: bold;">atan</span><span style="color: #080;">&#40;</span><span style="color: #080;">&#40;</span>x <span style="color: #080;">-</span> <span style="color: #ff0000;">0.90096886790242</span><span style="color: #080;">&#41;</span><span style="color: #080;">/</span><span style="color: #ff0000;">0.433883739117558</span><span style="color: #080;">&#41;</span> <span style="color: #080;">+</span> <span style="color: #ff0000;">0</span></pre></td></tr></table></div>

<p>是不是有一种在进行符号运算的错觉？</p>
<p>另：读牛人写的包总能发现令人震惊的东西，<code>rationalfun</code>里面很多代码都是依赖或改编自<code>polynom</code>包的，里面发现了这样一个函数：</p>

<div class="wp_codebox"><table><tr id="p6406"><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
</pre></td><td class="code" id="p640code6"><pre class="rsplus" style="font-family:monospace;">as.<span style="">function</span>.<span style="">polynomial</span> <span style="color: #080;">&lt;-</span>
<span style="color: #0000FF; font-weight: bold;">function</span><span style="color: #080;">&#40;</span>x, ...<span style="color: #080;">&#41;</span>
<span style="color: #080;">&#123;</span>
    a <span style="color: #080;">&lt;-</span> <span style="color: #0000FF; font-weight: bold;">rev</span><span style="color: #080;">&#40;</span><span style="color: #0000FF; font-weight: bold;">coef</span><span style="color: #080;">&#40;</span>x<span style="color: #080;">&#41;</span><span style="color: #080;">&#41;</span>
    w <span style="color: #080;">&lt;-</span> <span style="color: #0000FF; font-weight: bold;">as.<span style="">name</span></span><span style="color: #080;">&#40;</span><span style="color: #ff0000;">&quot;w&quot;</span><span style="color: #080;">&#41;</span>
    v <span style="color: #080;">&lt;-</span> <span style="color: #0000FF; font-weight: bold;">as.<span style="">name</span></span><span style="color: #080;">&#40;</span><span style="color: #ff0000;">&quot;x&quot;</span><span style="color: #080;">&#41;</span>
    ex <span style="color: #080;">&lt;-</span> <span style="color: #0000FF; font-weight: bold;">call</span><span style="color: #080;">&#40;</span><span style="color: #ff0000;">&quot;{&quot;</span>, <span style="color: #0000FF; font-weight: bold;">call</span><span style="color: #080;">&#40;</span><span style="color: #ff0000;">&quot;&lt;-&quot;</span>, w, <span style="color: #ff0000;">0</span><span style="color: #080;">&#41;</span><span style="color: #080;">&#41;</span>
    <span style="color: #0000FF; font-weight: bold;">for</span><span style="color: #080;">&#40;</span>i <span style="color: #0000FF; font-weight: bold;">in</span> <span style="color: #0000FF; font-weight: bold;">seq_along</span><span style="color: #080;">&#40;</span>a<span style="color: #080;">&#41;</span><span style="color: #080;">&#41;</span> <span style="color: #080;">&#123;</span>
        ex<span style="color: #080;">&#91;</span><span style="color: #080;">&#91;</span>i <span style="color: #080;">+</span> <span style="color: #ff0000;">2</span><span style="color: #080;">&#93;</span><span style="color: #080;">&#93;</span> <span style="color: #080;">&lt;-</span> <span style="color: #0000FF; font-weight: bold;">call</span><span style="color: #080;">&#40;</span><span style="color: #ff0000;">&quot;&lt;-&quot;</span>, w, <span style="color: #0000FF; font-weight: bold;">call</span><span style="color: #080;">&#40;</span><span style="color: #ff0000;">&quot;+&quot;</span>, a<span style="color: #080;">&#91;</span><span style="color: #ff0000;">1</span><span style="color: #080;">&#93;</span>, <span style="color: #0000FF; font-weight: bold;">call</span><span style="color: #080;">&#40;</span><span style="color: #ff0000;">&quot;*&quot;</span>, v, w<span style="color: #080;">&#41;</span><span style="color: #080;">&#41;</span><span style="color: #080;">&#41;</span>
        a <span style="color: #080;">&lt;-</span> a<span style="color: #080;">&#91;</span><span style="color: #080;">-</span><span style="color: #ff0000;">1</span><span style="color: #080;">&#93;</span>
    <span style="color: #080;">&#125;</span>
    ex<span style="color: #080;">&#91;</span><span style="color: #080;">&#91;</span><span style="color: #0000FF; font-weight: bold;">length</span><span style="color: #080;">&#40;</span>ex<span style="color: #080;">&#41;</span> <span style="color: #080;">+</span> <span style="color: #ff0000;">1</span><span style="color: #080;">&#93;</span><span style="color: #080;">&#93;</span> <span style="color: #080;">&lt;-</span> w
    f <span style="color: #080;">&lt;-</span> <span style="color: #0000FF; font-weight: bold;">function</span><span style="color: #080;">&#40;</span>x<span style="color: #080;">&#41;</span> NULL
    <span style="color: #0000FF; font-weight: bold;">body</span><span style="color: #080;">&#40;</span>f<span style="color: #080;">&#41;</span> <span style="color: #080;">&lt;-</span> ex
    f
<span style="color: #080;">&#125;</span></pre></td></tr></table></div>

<p>这个函数的作用就是用一个系数向量来生成一个多项式函数，里面<code>as.name()</code>，<code>call()</code>，<code>body()</code>之类的黑魔法用得不亦乐乎……</p>
]]></content:encoded>
			<wfw:commentRss>http://yixuan.cos.name/cn/2011/10/rationalfun/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>烧香</title>
		<link>http://yixuan.cos.name/cn/2011/10/bless/</link>
		<comments>http://yixuan.cos.name/cn/2011/10/bless/#comments</comments>
		<pubDate>Tue, 18 Oct 2011 07:43:20 +0000</pubDate>
		<dc:creator>yixuan</dc:creator>
				<category><![CDATA[生活]]></category>
		<category><![CDATA[烧香]]></category>

		<guid isPermaLink="false">http://yixuan.cos.name/cn/?p=636</guid>
		<description><![CDATA[这次考试得过啊……

]]></description>
			<content:encoded><![CDATA[<p>这次考试得过啊……</p>
<p><a href="http://yixuan.cos.name/cn/wp-content/uploads/2011/10/Panda.gif"><img class="aligncenter size-full wp-image-637" title="熊猫烧香" src="http://yixuan.cos.name/cn/wp-content/uploads/2011/10/Panda.gif" alt="" width="74" height="90" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://yixuan.cos.name/cn/2011/10/bless/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>当时只道是寻常</title>
		<link>http://yixuan.cos.name/cn/2011/10/commemorate/</link>
		<comments>http://yixuan.cos.name/cn/2011/10/commemorate/#comments</comments>
		<pubDate>Sun, 16 Oct 2011 14:21:38 +0000</pubDate>
		<dc:creator>yixuan</dc:creator>
				<category><![CDATA[生活]]></category>
		<category><![CDATA[当时只道是寻常]]></category>
		<category><![CDATA[浣溪沙]]></category>
		<category><![CDATA[纪念]]></category>
		<category><![CDATA[纳兰容若]]></category>

		<guid isPermaLink="false">http://yixuan.cos.name/cn/?p=631</guid>
		<description><![CDATA[纪念那些无忧的岁月。

]]></description>
			<content:encoded><![CDATA[<p>纪念那些无忧的岁月。</p>
<p><a href="http://yixuan.cos.name/cn/wp-content/uploads/2011/10/Rongruo.jpg"><img class="aligncenter size-full wp-image-632" title="浣溪沙 纳兰容若" src="http://yixuan.cos.name/cn/wp-content/uploads/2011/10/Rongruo.jpg" alt="" width="486" height="648" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://yixuan.cos.name/cn/2011/10/commemorate/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>My English site</title>
		<link>http://yixuan.cos.name/cn/2011/10/my-english-site/</link>
		<comments>http://yixuan.cos.name/cn/2011/10/my-english-site/#comments</comments>
		<pubDate>Sun, 02 Oct 2011 11:54:52 +0000</pubDate>
		<dc:creator>yixuan</dc:creator>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[生活]]></category>
		<category><![CDATA[博客]]></category>
		<category><![CDATA[站点]]></category>
		<category><![CDATA[英语]]></category>

		<guid isPermaLink="false">http://yixuan.cos.name/cn/?p=623</guid>
		<description><![CDATA[Well, just to save my terrible English, I have to find a place to practice writing that way. Please visit my English site http://yixuan.cos.name/en, another place where I share my ideas and thoughts.

Welcome you all!

]]></description>
			<content:encoded><![CDATA[<p>Well, just to save my terrible English, I have to find a place to practice writing that way. Please visit my English site <a href="http://yixuan.cos.name/en" target="_blank">http://yixuan.cos.name/en</a>, another place where I share my ideas and thoughts.</p>
<p>Welcome you all!</p>
]]></content:encoded>
			<wfw:commentRss>http://yixuan.cos.name/cn/2011/10/my-english-site/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

