R是一个开源的统计学软件,iRex DR1000S是第一款10寸屏电子书阅读器(第二款是Amazon刚刚推出的Kindle DX)。它们之间会有什么联系呢?
当然,学习R的过程中,需要阅读很多pdf文件。在10寸屏上阅读这些A4尺寸的pdf文件,比在电脑上阅读或者在那些小尺寸的电子书阅读器上阅读,要轻松多了。但这显然不是今天的重点。
因为iRex DR1000S支持16G存储卡,所以,它的实际作用已经不仅仅是个电子书阅读器,而是电子图书馆。每次看到有用的资料,我都会随手把它保存到硬盘上,然后定期与iRex DR1000S的存储卡进行同步。短短几个月下来,我小小的电子图书馆已经有了好几千份资料、上百个分类目录。任何时候,如果想阅读某个专题方面的资料,进入相应的子目录即可。
但很多时候,关掉电脑,打开iRex DR1000S,只是想读一下最近新搜集到的文档。这就很困难。因为它们分布在上百个分类目录中。iRex DR1000S虽然建立在LINUX系统上,但目前为止,还是没有任何官方或者爱好者提供类似“最新文档列表”的功能。
好了。这时候,好学生、统计博士小R出场了。
花费十几分钟时间,写上几行R代码,解决问题。
只要运行这段R代码,就会将最新的100份文档的快捷方式放到一个专门的目录中。
books<-file.info(dir("D:\\Readings",full.names=TRUE,recursive=TRUE))
colnames(books) = c("size", "Dir", "mode", "mtime", "ctime", "atime")
bs<-books[books$size>1000,c(1,4)]
bs<-bs[order(bs$mtime,decreasing=TRUE),]
bs[,"size"]<-prettyNum(bs[,"size"],scientific=FALSE,big.mark=",")
#create the quick links
ql.path<-"D:/Readings/Work/Latest"
ql.books<-rownames(bs)[1:100]
sapply(ql.books,function(x){
f.name<-basename(x)
f.url<-gsub("D:\\\\Readings","file:../..",x)
ql.file<-file.path(ql.path,paste(f.name,"_001.desktop",sep=""))
ql<-file(ql.file,open="wt",encoding="UTF-8")
writeLines("[Desktop Entry]",ql)
writeLines("Version=1.0",ql)
writeLines("Type=Link",ql)
writeLines(paste("URL=",f.url,sep=""),ql)
writeLines(paste("Name=",f.name,sep=""),ql)
close(ql)
})
这段代码的一个小缺憾是,通过R里的list.files函数或者
dir函数可以列出目录中的所有文件名,但是,不含有创建时间等任何文件信息。而file.info函数可以列出文件的创建时间等信息,但又必须提供完全的文件名给它。这样,通过file.info(dir(x))来获取目录下所有文件的名字及其创建时间,实际上对目录内容进行了两次搜索。效率有点偏低。也许还有效率高一点的函数是我所不知道的。