R: + = (плюс равно) и ++ (плюс плюс) эквивалент от С++/С#/java и т.д.?

Есть ли у R понятие += (плюс равно) или ++ (плюс плюс), как С++/С#/others?

92
задан SFun28 21 апр. '11 в 5:25
источник поделиться
5 ответов

Нет, это не так: R Определение языка: Операторы

68
ответ дан Patrick Cuff 21 апр. '11 в 5:40
источник поделиться

Следуя @GregaKešpret, вы можете сделать оператор инфикса:

`%+=%` = function(e1,e2) eval.parent(substitute(e1 <- e1 + e2))
x = 1
x %+=% 2 ; x
45
ответ дан baptiste 18 февр. '13 в 2:49
источник поделиться

R не имеет понятия increment operator (как, например, ++ в C). Однако, нетрудно реализовать их самостоятельно, например:

inc <- function(x)
{
 eval.parent(substitute(x <- x + 1))
}

В этом случае вы бы назвали

x <- 10
inc(x)

Однако он вводит служебные данные функции, поэтому медленнее, чем вводить x <- x + 1 самостоятельно. Если я не ошибаюсь, был введен increment operator, чтобы облегчить работу с компилятором, поскольку он может напрямую преобразовать код в эти инструкции машинного языка.

27
ответ дан Grega Kešpret 21 апр. '11 в 5:51
источник поделиться

Увеличение и уменьшение на 10.

require(Hmisc)
inc(x) <- 10 

dec(x) <- 10
12
ответ дан Wanderer 21 апр. '11 в 5:34
источник поделиться

R не имеет этих операций, потому что (большинство) объектов в R неизменяемы. Они не меняются. Обычно, когда похоже, что вы изменяете объект, вы фактически изменяете копию.

11
ответ дан hadley 21 апр. '11 в 6:14
источник поделиться

Другие вопросы по меткам