programacion - recodificar variables en r
Asignación de atributos del gráfico usando una función en R (1)
Dos cosas:
- Tu función no está devolviendo un valor.
- No está reasignando la variable cuando llama a la función.
Tratar:
toy.graph <- graph.formula(121-221,121-345,121-587,345-587,221-587, 490, 587)
deco <- function(x){
V(x)$color <- "red"
return(x)
}
toy.graph <- deco(toy.graph)
plot(toy.graph)
Si desea evitar la reasignación de variables y que su función devuelva un valor, probablemente pueda usar eval
dentro de su función para evaluar V(x)$color <- "red"
en el entorno principal.
EDITAR diversión con entornos:
toy.graph <- graph.formula(121-221,121-345,121-587,345-587,221-587, 490, 587)
deco <- function(x) {
# get actual variable name
p = deparse(eval(substitute(substitute(x)), parent.frame()))
# create expression to evaluate
e = parse(text = paste0("V(", p, ")$color <- ''red''"))
# evaluate in parent environment
eval.parent(e)
}
deco(toy.graph)
plot(toy.graph)
Estoy trabajando en un conjunto de funciones que me permitirán trazar los datos de red de varias maneras. Debido a que algunos procedimientos se usan en múltiples funciones, para evitar copiar y pegar, trato de convertir esos procedimientos en una mini función que luego simplemente puedo recordar cuando sea necesario.
En este momento me quedé atrapado con una mini función que decoraría mi gráfico en función de los atributos. Por ejemplo, quiero poder tomar un gráfico
toy.graph <- graph.formula(121-221,121-345,121-587,345-587,221-587, 490, 588)
y asignarle color. Pero cuando intento usar la siguiente función:
deco <- function(x){
V(x)$color <- "red"
}
y aplicarlo a mi gráfico, el color no se agrega:
deco(toy.graph)
toy.graph
## IGRAPH UN-- 5 5 --
## attr: name (v/c)
V(toy.graph)$color
## NULL
¿Qué me estoy perdiendo?