• R语言
  • Eclipse + StatET真的不错。

[quote]引用第18楼cloud_wei2008-12-02 23:03发表的“”:

http://a-lucky-bird.spaces.live.com/blog/cns!9FE71C3A1FA0267F!774.entry上面基本很全了,就差14楼的高亮了,要是博主同意的话,稍加补充就可以了。



另外,这个博客上精彩文章可不少啊。估计博主也有COS的ID吧,不妨冒个泡,顺便为我们的主站做做贡献。 [/quote]



我没有意见。但我没有http://cos.name的ID,有兴趣的朋友可以发上去。

--胡荣兴(hurongxing@hotmail.com)
网上找了一个搜索包中函数的函数。
<br />
findfuns <- function(x) {<br />
      if(require(x, character.only=TRUE)) {<br />
         env <- paste("package", x, sep=":")<br />
         nm <- ls(env, all=TRUE)<br />
         nm[unlist(lapply(nm, function(n) exists(n, where=env,<br />
                                                mode="function",<br />
                                                inherits=FALSE)))]<br />
      } else character(0)<br />
 }<br />


这样就可以将自己所有安装的包的函数找出来了,就可以自己添加到相应的文本里面以实现高亮。比如,要将自己现在已经载入的包中的函数都找出来可以:
<br />
z <-  lapply(.packages(all.available = FALSE), findfuns)<br />
z=unique(sort(unlist(z)))<br />
cat(z,file='out.txt',sep=',')<br />


然后直接将文本复制粘贴到相应文件就行了。
[quote]引用第19楼bravebird2008-12-03 00:03发表的“”:



我没有意见。但我没有http://cos.name的ID,有兴趣的朋友可以发上去。

--胡荣兴(hurongxing@hotmail.com)[/quote]



已经为你创建帐号,请查收邮件。谢谢!
目前我遇到的问题:

1、自己添加的函数应该可以像R中一样实现自动补全单词,但现在还不知道该如何实现;

2、在Eclipse中使用"?×××"这样的帮助语句以概率1发生死机事件,而我在Tinn-R中则根本调不出帮助,不知道这是普遍现象还是我的设置问题;

3、在Eclipse中画图也会随机发生死机事件;

4、Eclipse真的很占资源……(这个是没办法了,呵呵 )。



希望高手能予以帮助。





另外感觉COS越来越像一个Digg站了。
[quote]引用第22楼Ihavenothing2008-12-03 12:27发表的“”:

1、自己添加的函数应该可以像R中一样实现自动补全单词,但现在还不知道该如何实现;

2、在Eclipse中使用"?×××"这样的帮助语句以概率1发生死机事件,而我在Tinn-R中则根本调不出帮助,不知道这是普遍现象还是我的设置问题;

3、在Eclipse中画图也会随机发生死机事件;

4、Eclipse真的很占资源……(这个是没办法了,呵呵 )。

.......[/quote]

1. 同问。

2. 我好好的,没有死过机。

3. 也没有遇到。

4. 确实,太大了,可怜我的老机了。
所以我现在的做法是用statET+eclipse的语法高亮功能,然后编写调用Rscript.exe的批处理脚本,速度快,又方便并且在eclipse中的操作更加方便.如果配合上ant的build.xml真是爽到极点.并且中间生成的图像都会以.pdf的形式保存下来,省去了自己去一个一个图像窗口关闭的麻烦.
可以把文章的内容在主页折叠起来吗?否则主页要拉很长的滚动条……
[quote]引用第22楼Ihavenothing2008-12-03 12:27发表的“”:

目前我遇到的问题:

1、自己添加的函数应该可以像R中一样实现自动补全单词,但现在还不知道该如何实现;

2、在Eclipse中使用"?×××"这样的帮助语句以概率1发生死机事件,而我在Tinn-R中则根本调不出帮助,不知道这是普遍现象还是我的设置问题;

3、在Eclipse中画图也会随机发生死机事件;

4、Eclipse真的很占资源……(这个是没办法了,呵呵 )。

.......[/quote]

调用帮助需要设置pager的选项:options(pager="internal"),否则Tinn-R的帮助文件会显示在Tinn-R自己的窗口中(我是指启动Rterm的情况下)。
[quote]引用第22楼Ihavenothing2008-12-03 12:27发表的“”:

目前我遇到的问题:

1、自己添加的函数应该可以像R中一样实现自动补全单词,但现在还不知道该如何实现;

2、在Eclipse中使用"?×××"这样的帮助语句以概率1发生死机事件,而我在Tinn-R中则根本调不出帮助,不知道这是普遍现象还是我的设置问题;

3、在Eclipse中画图也会随机发生死机事件;

4、Eclipse真的很占资源……(这个是没办法了,呵呵 )。

.......[/quote]



可能是假死,你不要关闭它的弹出窗口,重新运行命令就可以解决问题。

占资源的问题很可能是你没有正确关闭R的控制台,导致打开了多个Rgui,你可以打开任务管理嚣,看下“Rterm.exe”进程的个数。
发现statET中,Rterm和RJ的性能存在很大的差异





代码稍微长点

Rterm要1分钟

RJ只要2秒



如果不是RJ有乱码,我就用RJ了



不知道乱码问题如何解决。



编译速度就快了。
[quote]引用第28楼bravebird2008-12-03 15:10发表的“”:





可能是假死,你不要关闭它的弹出窗口,重新运行命令就可以解决问题。

占资源的问题很可能是你没有正确关闭R的控制台,导致打开了多个Rgui,你可以打开任务管理嚣,看下“Rterm.exe”进程的个数。[/quote]



果然如此,在假死的时候再输一次命令就活了,真乃“置之死地而后生”也!太感谢了!



另外再问一下谢大师兄,Tinn-R的配置是不是要更改Rprofile.site这个文件?

目前这个文件中我保留了下面几句,不知道要如何更改?多谢师兄!

options(chmhelp=TRUE)

library(utils)

options(use.DDE=T)

.trPaths=c(一系列路径)
用MyEclipse测试后:



优势:

1. 简单的项目文件管理

2. 继承Eclipse开发组源代码共享功能

3. 简单的高亮,加自定义高亮

4. 编辑自动对齐缩进

5. Rd文件编辑

6. 后台调R



劣势:

1. 没有调试功能, 遗憾

2. 无法实现结构分析,list中的成员的显示提取,S4类成员的显示与提取, 再次遗憾

3. 通过rJava连接,效率下降,限制R性能的发挥

4. 没有Linux版本

5. 用Eclipse占用资源过大

6. 不很稳定,有bug



结论:statET并不像楼主说的那么好么,目前只是一个高级文本编辑器,至于调用R,用的还是人家的rJava,做成Eclipse插件,只是为了在后台调用R。代价和好处比起来,有点大。
[quote]引用第31楼karlqi2008-12-04 00:38发表的“”:

用MyEclipse测试后:



优势:

1. 简单的项目文件管理

2. 继承Eclipse开发组源代码共享功能

.......[/quote]



不需要安装rjava,调用rterm可以运行。
为什么我的run命令时常失灵?

在对话框里就显示

source("E:\\csvimport.R")之类的,不显示运行的结果?
[quote]引用第31楼karlqi2008-12-04 00:38发表的“”:

用MyEclipse测试后:



优势:

1. 简单的项目文件管理

2. 继承Eclipse开发组源代码共享功能

.......[/quote]

但是应用splus8的workbench的代价是:不支持中文。这一点非常让人讨厌。貌似splus插件也不支持list中成员的显示和提取。而且s-plus中语法编辑器做的实在是太简陋。
我觉得直接调用eclipse内部的console太不稳定,有时候假死,有时候运行没反应,还是选择直接在R当中输出比较稳定。

在windows,preference,statet的R interaction里面选择R-GUI(windows)。

不过,这样我直接点运行按钮还是经常无法运行,解决的办法是在eclipse里面把代码选中,然后点右键选择

run selection in R,这样就能直接在R里面运行了。

不过,直接在eclipse中引用GUI 的R的话,需要先安装.net 1.1。
最近又有一些小的发现。

首先Eclipse是有Linux版本的,在下载页http://www.eclipse.org/downloads/的下端可以看到它提供Win,Mac,Linux 32bit和Linux 64bit四种版本的下载。我在Ubuntu 8.04下测试过了Linux 32bit版本的Eclipse,它同样需要Java运行环境(我的是之前装过了),无需安装,界面与Win中无显著差别(需要提供p值吗…… )。但我应该是配置上出现了一些问题,调用Rterm时不太稳定,每次只要显示R的警告信息,终端就会强制退出。



其次补全单词可以通过如下方法实现:首先依然是打开Winow菜单中的Preferences对话框,然后顺次展开StatET->Source Editors->R Templates,右边框中的列表就是在编辑窗口中按"Alt+/"会出现的模板。点击New可以输入自定义的函数,如果只是要实现单词补全的话,就在Name和Pattern中填入函数名就行了,其它的内容和格式可以暂时不用管。

如果要实现批量添加,依然是找到de.walware.statet.r.ui.prefs这个文件(见14楼),看看其中有没有这样的语句:de.walware.statet.r.ui.text.r_editor_templates=<?xml version\="1.0" encoding\="UTF-8" standalone\="no"?><templates/>,如果没有就给它添上。这里采用的是xml格式,所以相比高亮的时候,语句要更罗嗦一些。添加的方式是在"<templates/>"之前的那个位置反复加上如下的语句:

<template autoinsert="true" context="r-code" deleted="false" description="" enabled="true" name="函数名">函数名</template>,

其中把“函数名”换成你要添加的函数。



真正使用单词补全的时候,按"Alt+/"会列出符合你前面已输字符的函数的列表,这时候双击你需要的函数或按上下键选中后按回车就可以把这个单词补全。这种补全单词的方式也许并不如R中方便,而且在命令行中无法使用这一功能,但是对于不太记得函数名时的情况,还是很有帮助的。