Почему «+» не работает с символами в R? - PullRequest
23 голосов
/ 24 августа 2009

Называй меня ленивым, но я просто ненавижу постоянно печатать такие вещи, как paste("a","b",sep='').

Я знаю, что "(т) его есть Р. Нет, если только как". (library(fortunes);(fortune(109)). Итак, мой следующий вопрос: можно ли легко изменить это поведение?

Ответы [ 2 ]

26 голосов
/ 24 августа 2009

@ Дирк: На этот раз ты не совсем прав. Это не парсер. Один может записать методы в R для «+» - help («+») переходит к «Арифметическим операторам» и упоминает что они являются общими, и вы можете написать методы для них ... и, конечно, многие авторы пакетов, например, мы делаем для пакета 'Matrix', и я также делаю для пакета 'Rmpfr', например. Но Дирк также прав (конечно!), Что вы не можете сделать это в R в настоящее время, просто определив метод для "+ .character".

Около трех лет назад я начал тему на R-devel (список рассылки R по разработке R; очень рекомендуется, если вы заинтересованы в этих темах; вы также можете получить доступ через Gmane, если не хотите подписаться): r-devel в архиве msg

Дело дошло до интересной дискуссии с большим количеством плюсов и минусов, в частности, Джон Чемберс («отец S и, следовательно, R») довольно решительно выступает против использования «+» для операции, которая является не коммутативной, а также r-devel, заархивированный msg2 (другим членом R-core), поддерживая мнение о том, что мы (R Core) не должны принимать / поддерживать идею; и если бы люди ** действительно * этого хотели, они могли бы определить % +% за это.

6 голосов
/ 24 августа 2009

Вам удобнее использовать sprintf?

За исключением этого, как насчет этой маленькой ловкости рук:

'%+%' <- paste

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