Recuerde, en funcionamiento todo R es una llamada de función (por lo tanto también las operaciones de asignación) y todo lo que existe es un objeto. funciones de reemplazo actúan como si modifican sus argumentos en lugar como en
colnames(d) <- c("Input", "Output")
Tienen el identificador <-
al final de su nombre y devuelven una copia modificada del objeto argumento (no primitivos funciones de sustitución) o el mismo objeto (funciones de reemplazo primitivos)
en el símbolo R, el siguiente no funcionará:
> `second` <- function(x, value) {
+ x[2] <- value
+ x
+ }
> x <- 1:10
> x
[1] 1 2 3 4 5 6 7 8 9 10
> second(x) <- 9
Error in second(x) <- 9: couldn't find function "second<-"
Como se puede ver, R es la búsqueda para el medio ambiente no second
pero para second<-
. Así que vamos a hacer lo mismo pero utilizando un identificador de dicha función en su lugar:
> `second<-` <- function(x, value) {
+ x[2] <- value
+ x
+ }
Ahora, la asignación en la segunda posición del vector de obras:
> second(x) <- 9
> x
[1] 1 9 3 4 5 6 7 8 9 10
También escribió un script sencillo para listar todas las funciones de reemplazo en el paquete base R, find it here.
Esta es una Q perfectamente aceptable para SO –
posible duplicado de ['levels <-' (¿Qué hechicería es esto?] (Http://stackoverflow.com/questions/10449366/levels-what-sorcery-is-this) –
Ver ** Extendiendo R.- John Chambers (2016) **: * páginas 73 a 79 del Capítulo 5 * –