Supongo que se trata de R ... R no pasa argumentos por referencia (entornos y clases de referencia (S5) son una excepción, pero esto está fuera de la corriente rango de abstracción). Por lo tanto, cuando se escribe
addThree<-function(x){
x<-x+3
}
4->y
addThree(y)
y
sigue siendo 4 al final del código, porque dentro de la función, x
es la nueva copia de y
s valor, no el y
en sí (de nuevo, no exactamente, pero esos son detalles de orden superior).
Por lo tanto, debe adaptarse al esquema de pase-por-copia de R y devolver el valor alterado y asignar de nuevo a la variable (usando redacción de edad, no hay procedimientos en I):
addThree<-function(x){
return(x+3)
}
4->y
addThree(y)->y
#y is now 7
Don 'te preocupes, esto funciona sin problemas para objetos aún más complejos porque R es basura recogida y tiene evaluación perezosa.
Por cierto, se puede omitir return
si desea devolver el último valor producido en la función, es decir, la definición addThree
's puede tener este aspecto:
addThree<-function(x) x+3
Ayudaría saber qué software está usando, y ver un ejemplo mínimo donde las cosas van mal. – caracal
si se trata de R necesita devolver nuevos valores de las funciones por 'return (data_frame_I_work_with)' o 'return (column_I_made)' –