Почему использование `<<-` осуждается и как этого избежать?

Я следил за обсуждением ЗДЕСЬ, и мне любопытно, почему использование осуждается в R. Какую путаницу это вызовет?

Я также хотел бы получить несколько советов о том, как избежать . Я использую следующее довольно часто. Например:

### Create dummy data frame of 10 x 10 integer matrix.
### Each cell contains a number that is between 1 to 6.
df <- do.call("rbind", lapply(1:10, function(i) sample(1:6, 10, replace = TRUE)))

Чего я хочу добиться, так это сдвинуть каждое число вниз на 1, т. е. все двойки станут единицами, все тройки станут равными 2 и т. д. Таким образом, все nбудут равными п-1. Я достигаю этого следующим образом:

df.rescaled <- df
sapply(2:6, function(i) df.rescaled[df.rescaled == i] <<- i-1))

Как в этом случае избежать ? В идеале я хотел бы иметь возможность передавать результаты sapply в другую переменную по строкам:

df.rescaled <- sapply(...)

9
задан Community 23 May 2017 в 12:08
поделиться