我打算编译qxde01同学的Rdouban包,https://github.com/qxde01/Rdouban
结果出现了ERROR: a 'NAMESPACE' file is required
参考了下这篇http://stackoverflow.com/questions/17196225/error-a-namespace-file-is-required
是说3.0.1之后又不自动创建了?= =
yihui 虽然我接触R不久,但关于R的这些“精巧”之处,我个人有些不同的体会……命名空间作为一种管理软件结构的方式,也算是一个相当古老的概念了,例如C++可以很轻松地声明命名空间,Python里则是一个文件就可以作为一个命名空间,还可以很方便地指定别名。许多以面向对象作为主要设计方向的语言都有类似的设计。但在R之中,命名空间给人的感觉却相当死板,必须是打成包才能使用这个特性。作为一个“随手即用”的语言,多数用户自己写的“R应用”大概还是使用 source("<path>") 之类的方式组织起来的,没有必要对每一层抽象单独打包,但这时候命名空间这个特性就无法发挥作用,而且命名空间及其下属函数的指定方式也显得繁琐。除此之外,R中还有诸多的古怪之处,包括R中繁冗的面向对象的语法、library函数中变量不加引号,各种古怪的函数变量等等,其形式都是相当晦涩难懂。综合起来给人的印象就是这不是一个设计非常良好的语言,而是将各种特性胡乱拼凑而成的弗兰肯斯坦,说起来功能很强大,但实际学习和使用起来却让人非常糟心……
当然我不是专业统计人士,接触R的时间也比较短,如果有什么错误还请海涵及指正……
ukyoi library函数中变量不加引号,这是近年来某个版本之后的新特性,我觉得完全不合逻辑,真不知道他们是怎么想的。
yang.xiang "他说放在CRAN上太麻烦",自从提交了几个包到 CRAN 之后,我终于明白他说的是啥意思了……
不如来个科幻征文活动:R 语言消亡的前夜。
ukyoi 你的批评都很中肯啊。我这篇文章是八年前写的,当时的我也是菜鸟一枚,见笑见笑!
R 一定程度上也可以用文件作为一个“命名空间”:sys.source()
可以指定环境,比如
bar = new.env()
sys.source('foo.R', bar)
然后就可以 bar$对象
调用 foo.R 里创建的对象了。
dapengde library()
里不加引号这个糟糕的决定基本上是 R 诞生之初就有了,不是近年来的特性: https://yihui.name/cn/2012/09/equal-and-arrow/