---
title: formatR：格式化R代码的R包
date: '2010-03-25'
slug: new-r-package-formatr
---

小邱童鞋眼尖，我刚往CRAN发了个R包没几天就被发现了。很久很久以前，`source()`函数是可以输出干净整齐的R代码的，但从某个R版本开始，这项功能被去掉了，让我感到很不爽，于是乎，研究了一下前一个版本的R源文件，悟出了整理代码的本质，于是操刀写了一个清理代码的函数；很久以前，小邱想出了一个聪明的办法，使得这个函数可以保留某些注释语句（以前这个函数只能去掉所有注释）；几天前，我在看**gWidgets**包的同时，为这个函数写了个界面。一个新的R包**formatR**就诞生了。

很多人写R代码都不管代码是否整齐可读，也许是没有受够读代码的折磨：本来读别人的代码就是很痛苦的事情，如果代码写得不整齐，就更要命了。幸好R可以自己处理自己的代码，以R攻R，就可以得到自动整理的整齐代码了。

这个包的界面很简略，就是一个文本框加上若干按钮。以下是效果图：

![R代码整容前](https://db.yihui.org/imgur/Y55lL.png)

![R代码整容后](https://db.yihui.org/imgur/v141t.png)

感兴趣的客官可以从[GitHub](https://github.com/yihui/formatR)获得最新源代码自行编译安装，注意这个包依赖于**gWidgetsRGtk2**包。初级用户可以从CRAN安装（CRAN上的版本取决于我的提交，可能会有延迟）：

```r
## 启动R，然后
install.packages('formatR')
library(formatR)
## 将自动启动界面
```

第二个版本中加入了执行代码、字体设置以及其它选项。需要提醒的有两点：

1. 这个代码清理功能只能保留**整行**的注释（也就是单独占一行的注释），行内注释会被删掉。
2. 目前暂时还没搞清楚中文编码的问题，所以暂不支持中文，如果代码中有中文，将会被转换为乱码。有谁熟悉**gWidgets**的话可以帮帮我。
