Estimado Mauricio Monsalvo Leí muy rápido su correo, pienso en que podría aislar problemas en distintas funciones y que estas sean llamadas por la función general, el mantenimiento es más fácil, porque si ahora logra lo que desea pero dentro de dos días piensa en una mejora, al estar todo en una sola función puede caer en problemas, en cambio si separa en varias funciones el inconveniente queda en una única función.
Por otro lado a mí me resulta más fácil probar por fragmentos de código que no todo junto, aunque eso es muy personal y depende de las capacidades de cada uno (yo tengo que aislar en secciónes). Javier Rubén Marcuzzi De: Mauricio Monsalvo Enviado: miércoles, 15 de marzo de 2017 7:21 Para: r-help-es Asunto: [R-es] Crear una función Hola. Estoy intentando crear una función pero no logro que termine de cerrar y mi manejo no permite que el google me ayude... n.reg.dep <- function(x, y) { etiqueta <- str_replace(nombres[Variable == y, Descripcion], "[ ]", "") tabla <- datos[, .N, by = .(etiqueta = A3a)] # tabla <- tabla[, Porc := round(N/sum(N)*100,1)] # % tabla[, PorcAc := cumsum(Porc)] # Regiones tabla.1 <- datos[, .N, by = .(etiqueta = x, Region)] tabla.1[, Porc := round(N/sum(N)*100,1), by =.(Region)] tabla.1 <- spread(tabla.1[, .(etiqueta, Region, Porc)], key = Region, value = Porc) tabla.reg <- left_join(tabla, tabla.1) # Depdendencia tabla.1 <- datos[, .N, by = .(etiqueta = x, Dependencia = B2a)] tabla.1[, Porc := round(N/sum(N)*100,1), by =.(Dependencia)] # % por Dependencia tabla.1 <- na.omit(tabla.1) tabla.1 <- spread(tabla.1[, .(etiqueta, Dependencia, Porc)], key = Dependencia, value = Porc) tabla.dep <- left_join(tabla, tabla.1) tabla <- left_join(tabla.reg, tabla.dep) return(tabla) } n.reg.dep(datos$A3a, "A3a") n.reg.dep(datos$A3a) Si bien anda y el resultado es bastante parecido al que espero, no puedo hacer que las tablas se llamen como quisiera porque el factor "etiqueta" que debería indicar el primer nombre de la variable no es consdierado, como podrán ver. Si correo el código para la variable, resulta algo como: > tabla Sexo N Porc PorcAc NEA NOA Nacionales Provinciales Municipales Comunitarios Religiosos Privados 1 Mujer 270 86.8 86.8 92.7 84.2 77.8 89.6 83.8 78.9 90 100 2 Varon 40 12.9 99.7 7.3 15.3 22.2 10.4 16.2 19.3 10 NA 3 <NA> 1 0.3 100.0 NA 0.5 NA NA NA NA NA NA Pero como tengo que hacerlo muchas veces, necesitaría poder escribir esta (mi primera) función. Ahorraría mucho tiempo, además de asegurarme que no pifio en el copiar y pegar y reemplazar. Adjunto datos de prueba y una tabla con los las variables y sus variable.labels (nombres). Se usa: library(data.table) library(tidyverse) # library(dplyr) library(stringr) Muchas gracias. Saludos. -- Mauricio [[alternative HTML version deleted]] _______________________________________________ R-help-es mailing list R-help-es@r-project.org https://stat.ethz.ch/mailman/listinfo/r-help-es [[alternative HTML version deleted]] _______________________________________________ R-help-es mailing list R-help-es@r-project.org https://stat.ethz.ch/mailman/listinfo/r-help-es