为什么“+”不对R中的字符进行操作?

时间:2009-08-23 22:12:28

标签: r syntax operators

叫我懒惰,但我只是讨厌像paste("a","b",sep='')一样打字。

我知道“(t)他是R.没有,只有如此。” (library(fortunes);(fortune(109))。所以,我的后续问题是:是否有可能轻易改变这种行为?

2 个答案:

答案 0 :(得分:26)

@ Dirk:一次,你不太对劲。它不是解析器。 一个可以在R中为“+”编写方法 - help(“+”)转到“算术运算符”并提及 这些都是通用的,你可以为它们编写方法......当然,很多包编写者也会这样做,例如,我们为'Matrix'包做,而且我也用于'Rmpfr'包,例如 但是Dirk也是对的(当然!)你目前无法在R中做到这一点, 只需为“+ .character”定义一个方法。

大约三年前,我在R-devel(R开发的R邮件列表)上开始了一个主题;如果你对这些主题感兴趣,我们非常推荐;如果你不想,你也可以通过Gmane访问订阅):r-devel archived msg

这是一个有趣的讨论,有很多优点和缺点, 特别是John Chambers(“S的父亲,因此R”)非常反对使用“+”进行可交换的操作, 以及r-devel archived msg2(由另一个R核心成员),支持我们(R核心)不应采纳/支持这一想法的观点;如果人们**真的想要它,他们可以定义 %+%。

答案 1 :(得分:6)

使用sprintf对您来说更方便吗?

除此之外,这个小手掌怎么样:

'%+%' <- paste

'and' %+% 'now' %+% 'for'%+% 'something' %+% 'completely' %+% 'different'    
# [1] "and now for something completely different"