[R-es] Actualizar tabla en shiny
Hola, Quería preguntar si alguien sabe cómo se puede utilizar el resultado de modificar una tabla con el argumento editable = TRUE de datatable, para actualizar una segunda tabla. Adjunto un código de ejemplo y lo copio también aquí abajo. Lo que yo querría por ejemplo es poner en la columna 'replacements' de la tab1 los valores 1 y 2 (clicando en las celdas de esa columna y escribiendo a mano ese valor, gracias a editable = TRUE) y que en la tab2 aparecieran esos valores cambiados. He encontrado este enlace con la misma idea https://stackoverflow.com/questions/31744300/using-the-values-of-rendered-datatable-in-later-analysis pero no sé llevar a cabo los procedimientos que se comentan en la respuesta. Gracias de antemano. Saludos, Guillermo library(shiny) library(DT) library(dplyr) ui <- fluidPage( sidebarLayout( sidebarPanel( h4("App para sustituir valores. A partir de sustituir valores en la tabla de arriba, el objetivo es actualizar la tabla de abajo."), ), mainPanel( dataTableOutput("tab1"), br(), dataTableOutput("tab2") ) ) ) server <- function(input, output) { output$tab1 <- renderDataTable({ df1 <- data.frame(values_to_replace = c("A+", "B-")) %>% mutate(replacements = NA) datatable(df1, rownames = FALSE, editable = TRUE) }) output$tab2 <- renderDataTable({ df1 <- data.frame(observations = c("A+", "B-", 1, 5, "B-", 7, "A+", "B-")) vals_orig <- c("A+", "B-") #vals_repl <- df1$replacements # ESTO ES LO QUE DEBE VENIR DE tab. vals_repl <- c(10, 20) df2 <- df1 %>% mutate(observations_repl = plyr::mapvalues(observations, from = vals_orig, to = vals_repl)) datatable(df2, rownames = FALSE) }) } shinyApp(ui, server) app_example_data_replacement.R Description: Binary data ___ R-help-es mailing list R-help-es@r-project.org https://stat.ethz.ch/mailman/listinfo/r-help-es
[R-es] (Fwd) Re: Re: Evitar posibles conflictos entre librerí as
Estimado Javier, Gracias por la respuesta. Aunque he tratado de utilizar los imports y la carga de paquetes de diferentes formas, no he conseguido de momento evitar el error. Al final, para el objetivo de crear un login estoy utilizando el paquete shinyauthr, https://github.com/PaulC91/shinyauthr No está tan desarrollado como el de shinymanager pero parece un poco más estable. Saludos, Guillermo > Estimado Guillermo > > El problema está en los tokens, esto es una cantidad de números y letras, > lo que sea, mire un ejemplo en https://jwt.io/ , en otras palabras es lo > que identifica cada una para con el servidor y que R no realice por ejemplo > un promedio mezclando dados de usuarios. En un momento se debe requerir > algo que al no tener el token no R no conoce donde buscar. Intente algun > import o library() > > Javier Rubén Marcuzzi > > El lun., 20 jul. 2020 a las 5:38, escribió: > > > Buenos días, > > > > Tengo el siguiente problema que no consigo solucionar y quisiera preguntar > > si alguien tiene alguna recomendación: > > > > Estoy desarollando una shiny app en la que utilizo el paquete shinymanager > > para que el usuario acceda a ella mediante una contraseña. > > > > Esta app utiliza, entre otros, el paquete tidytext, que tiene en la lista > > de Suggests el paquete quanteda. > > https://cran.r-project.org/web/packages/tidytext/ > > > > Cuando ejecuto esta app en mi ordenador local funciona bien, es decir, > > puedo hacer el login sin problema. Sin embargo, cuando subo esta app a un > > servidor personal, me da este error (tanto en local como en el servidor > > tengo las mismas versiones de los paquetes): > > > > Error in unclass: cannot unclass an environment > > 58: upgrade_tokens > > 57: as.tokens.tokens > > 55: docvars.tokens > > 52: $.tokens > > 50: secure_server > > > > secure_server es una función de shinymanager y he visto que upgrade_tokens > > es una función de quanteda. He podido descubrir que shinymanager define una > > clase interna que se llama .tokens <- R6::R6Class(...), mientras que > > quanteda tiene una función que se llama tokens <- function(...) > > > > Entiendo que hay un conflicto entre shinymanager y quanteda (aunque > > quanteda no es un paquete que se cargue con Imports), pero no he podido > > lograr resolverlo. Tampoco he podido averiguar qué significa "cannot > > unclass an environment". > > > > ¿Alguien conoce una posible solución? > > > > Gracias de antemano. > > > > Un saludo, > > > > Guillermo > > > > ___ > > R-help-es mailing list > > R-help-es@r-project.org > > https://stat.ethz.ch/mailman/listinfo/r-help-es > > > ___ R-help-es mailing list R-help-es@r-project.org https://stat.ethz.ch/mailman/listinfo/r-help-es
[R-es] Evitar posibles conflictos entre librerías
Buenos días, Tengo el siguiente problema que no consigo solucionar y quisiera preguntar si alguien tiene alguna recomendación: Estoy desarollando una shiny app en la que utilizo el paquete shinymanager para que el usuario acceda a ella mediante una contraseña. Esta app utiliza, entre otros, el paquete tidytext, que tiene en la lista de Suggests el paquete quanteda. https://cran.r-project.org/web/packages/tidytext/ Cuando ejecuto esta app en mi ordenador local funciona bien, es decir, puedo hacer el login sin problema. Sin embargo, cuando subo esta app a un servidor personal, me da este error (tanto en local como en el servidor tengo las mismas versiones de los paquetes): Error in unclass: cannot unclass an environment 58: upgrade_tokens 57: as.tokens.tokens 55: docvars.tokens 52: $.tokens 50: secure_server secure_server es una función de shinymanager y he visto que upgrade_tokens es una función de quanteda. He podido descubrir que shinymanager define una clase interna que se llama .tokens <- R6::R6Class(...), mientras que quanteda tiene una función que se llama tokens <- function(...) Entiendo que hay un conflicto entre shinymanager y quanteda (aunque quanteda no es un paquete que se cargue con Imports), pero no he podido lograr resolverlo. Tampoco he podido averiguar qué significa "cannot unclass an environment". ¿Alguien conoce una posible solución? Gracias de antemano. Un saludo, Guillermo ___ R-help-es mailing list R-help-es@r-project.org https://stat.ethz.ch/mailman/listinfo/r-help-es
[R-es] foreach doParallel
Hola, Estoy desarrollando un algoritmo para bases de datos grandes. Básicamente es un algoritmo con varias iteraciones en el que comparo el valor de la iteración actual y lo comparo con el de la anterior. Si es menor, lo reemplazo. Si no, no. He escrito la versión simple con un bucle for y la versión en paralelo usando un bucle foreach paralelizando en varios núcleos para tratar de reducir el tiempo de computación. Lo que pasa es que no obtengo los mismos resultados con ambos algoritmos. Y es que no consigo entender bien cómo actua foreach usando varios núcleos, por lo que quisiera pediros vuestra ayuda. Un ejemplo sencillo es el siguiente: En primer lugar, la versión for: set.seed(10) vect <- c() err <- Inf for (i in 1:3) { vect <- c(vect, sample(-10:10, 1)) if (vect[i] < err) { err <- vect[i] } } vect #[1] 0 -4 -2 err #[1] -4 Efectivamente, el error obtenido es el menor valor. Ahora la versión foreach sin paralelizar (por ello aparece un warning, según se indica en la viñeta de doParallel): library(foreach) comb <- function(a, b) { if (a < b) { return(a) }else{ return(b) } } set.seed(10) vect <- c() err <- Inf d1 <- foreach(i = 1:3, .combine = "rbind") %dopar% { vect <- c(vect, sample(-10:10, 1)) err <- comb(vect[i], err) data.frame(cand = vect[i], err = err) } d1 # cand err #10 0 #2 -4 -4 #3 -2 -4 De nuevo nos aparece que el error es -4. Por último, la versión foreach con doParallel, en la que no consigo obtener los mismos resultados: library(doParallel) library(doRNG) no_cores <- detectCores() - 1 no_cores #[1] 3 cl <- makeCluster(no_cores) registerDoParallel(cl) registerDoRNG(10) vect <- c() d1 <- foreach(i = 1:3, .combine = "rbind") %dopar% { err <- Inf comb <- function(a, b) { if (a < b) { return(a) }else{ return(b) } } vect <- sample(-10:10, 1) err <- comb(vect, err) data.frame(cand = vect, err = err) } d1 # cand err #1 10 10 #24 4 #36 6 stopCluster(cl) Parece que cada iteración se ha ido a un núcleo diferente y no se comparan entre sí, sino cada una con el valor inicial Inf. ¿Sabéis cómo conseguir la comparación entre sucesivos valores en el caso del foreach paralelo? Muchas gracias de antemano. Saludos, Guillermo ___ R-help-es mailing list R-help-es@r-project.org https://stat.ethz.ch/mailman/listinfo/r-help-es
Re: [R-es] Contar categorías después de ciertos valores
Muchas gracias Carlos y Javier por la ayuda. Saludos, Guillermo > Hola, > > Esta es una forma... > > #- > > x <- c(3, "A", "B", 5, "A", 4, 5, "A", "A", 3) > x_n <- as.numeric(x) > > cat_val <- unique(x[is.na(x_n)]) > num_val <- x_n[!is.na(x_n)] > > df <- data.frame( > x_n = x_n, > y = 1:length(x_n), > x = x, > x_l = is.na(df$x_n) > ) > > num_df <- data.frame( nume = 0, letra = 0) > cont <- 0 > for(i in 1:nrow(df)) { > if (df[i, 4] == FALSE & df[i + 1, 4] != FALSE & i < nrow(df)) { > num <- df[i, 1] > } > if (df[i, 4] != FALSE) { > cont <- cont + 1 > num_df[cont, 1] <- num > num_df[cont, 2] <- as.vector(df[i, 3]) > } > if (df[i, 4] == FALSE & df[i + 1, 4] == FALSE & i < nrow(df)) { > cont <- cont + 1 > num <- df[i, 1] > num_df[cont, 1] <- num > num_df[cont, 2] <- 0 > } > > } > > > library(dplyr) > library(tidyr) > > res_df <- num_df %>% > group_by(nume, letra) %>% > summarize( res = n()) %>% > spread( letra, res) > > res_df[is.na(res_df)] <- 0 > res_df > > #- > > > Que produce este resultado: > > > res_df > # A tibble: 3 x 4 > # Groups: nume [3] >nume `0` A B > > 13.0.1.1. > 24.1.0.0. > 35.0.3.0. > > Saludos, > Carlos Ortega > www.qualityexcellence.es > > > El 9 de marzo de 2018, 16:02, escribió: > > > Hola, > > > > Estoy intentando averiguar cómo contar el número de categorías situadas > > después de ciertos valores. Por ejemplo, en el siguiente vector: > > > > x <- c(3, "A", "B", 5, "A", 4, 5, "A", "A", 3) > > > > el resultado que quisiera obtener es: > > > > Valor -> Resultado > > 3 -> 1 A y 1 B > > 4 -> 0 A y 0 B > > 5 -> 3 A y 0 B > > > > ¿Alguien tiene alguna sugerencia?. > > > > Muchas gracias de antemano. > > > > Guillermo > > > > ___ > > R-help-es mailing list > > R-help-es@r-project.org > > https://stat.ethz.ch/mailman/listinfo/r-help-es > > > > > > -- > Saludos, > Carlos Ortega > www.qualityexcellence.es > ___ R-help-es mailing list R-help-es@r-project.org https://stat.ethz.ch/mailman/listinfo/r-help-es
[R-es] Contar categorías después de ciertos valores
Hola, Estoy intentando averiguar cómo contar el número de categorías situadas después de ciertos valores. Por ejemplo, en el siguiente vector: x <- c(3, "A", "B", 5, "A", 4, 5, "A", "A", 3) el resultado que quisiera obtener es: Valor -> Resultado 3 -> 1 A y 1 B 4 -> 0 A y 0 B 5 -> 3 A y 0 B ¿Alguien tiene alguna sugerencia?. Muchas gracias de antemano. Guillermo ___ R-help-es mailing list R-help-es@r-project.org https://stat.ethz.ch/mailman/listinfo/r-help-es
Re: [R-es] Problema con shiny en Fedora
Hola Freddy, Muchas gracias por la respuesta. Lo he probado y no ha funcionado. Una vez ejecutado update.packages(ask = FALSE, checkBuilt = TRUE), cuando entro en R desde la terminal con: $ sudo R y ejecuto la app: > library(shiny) > runExample("01_hello") me aparece el mensaje de error que adjunto en un txt. En cambio, cuando entro en R desde la terminal simplemente con: $ R sí que me aparece la aplicación de 01_hello y funciona bien. Viendo el mensaje de error, he probado a poner google-chrome como servidor por defecto (en lugar de firefox), pero entrando con $ sudo R la app sigue sin abrirse y entrando con $ R sí que se sigue abriendo, es decir, la app se abre en el servidor que esté definido por defecto, que es como debería ser, tanto entrando con $ sudo R como desde RStudio, donde tampoco se abre. He mirado si es un problema de las librerías y RStudio y R sin ser root tienen las mismas: $ sudo R > libPaths() [1] "/usr/lib64/R/library" [2] "/usr/share/R/library" $ R > libPaths() [1] "/home/guillevinue/R/x86_64-redhat-linux-gnu-library/3.4" [2] "/usr/lib64/R/library" [3] "/usr/share/R/library" En RStudio: > .libPaths() [1] "/home/guillevinue/R/x86_64-redhat-linux-gnu-library/3.4" [2] "/usr/lib64/R/library" [3] "/usr/share/R/library" ¿Alguna posible sugerencia? Saludos, Guillermo > Hola Guillermo. > > > "Reinstalling packages with the new version of R" dice "The following code > > should be run as root after upgrading R on Linux". Esto podría ser una > > solución pero ciertamente no sé cómo hacerlo porque en la terminal: > > $ sudo update.packages(ask = FALSE, checkBuilt = TRUE) > > no se puede ejecutar. > > > > ¿Servirá escribir desde la terminal > > sudo R > > > > ingresar la contraseña y luego actualizar con > > update.packages(ask = FALSE, checkBuilt = TRUE) > > > ? > > Haznos saber. > > ¡Salud! > > -- > «Pídeles sus títulos a los que te persiguen, pregúntales > cuándo nacieron, diles que te demuestren su existencia.» > > Rafael Cadenas > > library(shiny) > runExample("01_hello") Listening on http://127.0.0.1:6671 No protocol specified Unable to init server: Could not connect: Connection refused Error: cannot open display: :0 /usr/bin/xdg-open: line 832: x-www-browser: command not found No protocol specified Unable to init server: Could not connect: Connection refused Error: cannot open display: :0 /usr/bin/xdg-open: line 832: iceweasel: command not found /usr/bin/xdg-open: line 832: seamonkey: command not found /usr/bin/xdg-open: line 832: mozilla: command not found No protocol specified Unable to init server: Could not connect: Connection refused Failed to parse arguments: Cannot open display: /usr/bin/xdg-open: line 832: konqueror: command not found /usr/bin/xdg-open: line 832: chromium-browser: command not found No protocol specified (google-chrome:3239): Gtk-WARNING **: cannot open display: :0 /usr/bin/xdg-open: line 832: www-browser: command not found /usr/bin/xdg-open: line 832: links2: command not found /usr/bin/xdg-open: line 832: elinks: command not found /usr/bin/xdg-open: line 832: links: command not found /usr/bin/xdg-open: line 832: lynx: command not found /usr/bin/xdg-open: line 832: w3m: command not found xdg-open: no method available for opening 'http://127.0.0.1:6671' ___ R-help-es mailing list R-help-es@r-project.org https://stat.ethz.ch/mailman/listinfo/r-help-es
[R-es] Problema con shiny en Fedora
Hola, He actualizado las versiones con las que trabajo de Fedora, R y RStudio y shiny me ha dejado de funcionar. Cuando ejecuto simplemente: library(shiny) runExample("01_hello") RStudio se cierra. He buscado en google con cosas similares a "Rstudio crashes shiny linux" y no me ha funcionado ninguna de las sugerencias que he encontrado. Tengo actualizados todos los paquetes. En este link: https://shiny.rstudio.com/articles/upgrade-R.html en el apartado "Reinstalling packages with the new version of R" dice "The following code should be run as root after upgrading R on Linux". Esto podría ser una solución pero ciertamente no sé cómo hacerlo porque en la terminal: $ sudo update.packages(ask = FALSE, checkBuilt = TRUE) no se puede ejecutar. Estos son los datos de las versiones con las que trabajo: ¿Alguien ha tenido un problema similar y sabe cómo resolverlo? Muchas gracias. > RStudio.Version() $mode [1] "desktop" $version [1] ‘1.0.153’ > sessionInfo() R version 3.4.1 (2017-06-30) Platform: x86_64-redhat-linux-gnu (64-bit) Running under: Fedora 26 (Workstation Edition) Matrix products: default BLAS/LAPACK: /usr/lib64/R/lib/libRblas.so locale: [1] LC_CTYPE=en_US.UTF-8LC_NUMERIC=C LC_TIME=en_US.UTF-8 [4] LC_COLLATE=en_US.UTF-8 LC_MONETARY=en_US.UTF-8 LC_MESSAGES=en_US.UTF-8 [7] LC_PAPER=en_US.UTF-8LC_NAME=C LC_ADDRESS=C [10] LC_TELEPHONE=C LC_MEASUREMENT=en_US.UTF-8 LC_IDENTIFICATION=C attached base packages: [1] stats graphics grDevices utils datasets methods base loaded via a namespace (and not attached): [1] compiler_3.4.1 tools_3.4.1 ___ R-help-es mailing list R-help-es@r-project.org https://stat.ethz.ch/mailman/listinfo/r-help-es
Re: [R-es] Bucle for que se salte los errores
Hola, Creo que sería añadir if(i == 0) next Saludos, Guillermo > Buenas, �como puedo hacer que el bucle for se salte el error que salta cuando > i<-0 en el codigo que paso?? > > > > count <- 0 > for(i in -2:2){ > z<-1/i > z<-z*z > modelo<-lm(z~1) > } > > > Gracias > > > > > > [[alternative HTML version deleted]] > > ___ R-help-es mailing list R-help-es@r-project.org https://stat.ethz.ch/mailman/listinfo/r-help-es
Re: [R-es] Visualización de un gráfico guardado c omo variable
Hola Patricio, Creo que puede ser usando print(bxp01) Saludos, Guillermo > Hola. > En un análisis estoy guardando un gráfico en una variable, ya que necesito > utilizar las estadísticas que este genera: bxp01 <- boxplot(var~itv,data), > específicamente los outliers. > Luego necesito mostrar la gráfica. Pensaría que solo es llamando a bxp01 > pero se me imprime el objeto. Existe alguna función o necesito llamar > nuevamente a la función boxplot ??? > > Gracias > > [[alternative HTML version deleted]] > > ___ > R-help-es mailing list > R-help-es@r-project.org > https://stat.ethz.ch/mailman/listinfo/r-help-es > ___ R-help-es mailing list R-help-es@r-project.org https://stat.ethz.ch/mailman/listinfo/r-help-es
Re: [R-es] Etiquetas en mapas geográficos con ggplot 2 en R
Hola Nayla, Creo que la función grid.text del paquete grid te puede servir. Saludos, Guillermo > Hola, > > > No he logrado encontrar si se pueden poner etiquetas a los mapas que se hacen > con ggplot2. Es decir, me gustar�a poner el nombre de los estados de un pa�s > as� como un n�mero de referencia de la información que se está reflejando en > el mapa. > > > Alguien podr�a asesorarme por favor? > > > Se los agradecer�a mucho. > > > Nayla > > [[alternative HTML version deleted]] > > ___ R-help-es mailing list R-help-es@r-project.org https://stat.ethz.ch/mailman/listinfo/r-help-es
Re: [R-es] Formato numérico
Hola Mauricio, Poniendo options(scipen = 999) antes de hacer los cálculos se desactiva la notación científica. Saludos, Guillermo > Hola. > Tengo un problema con el formato de salida de un objeto "numeric", que los > expresa en formato científico o exponencial. > > range(total$ImpTotal) > [1] 5.66 806907887.10 > > Valores <- quantile(total$ImpTotal, c(0, 0.01, 0.02, 0.025, 0.03, 0.05, > 0.1, 0.25, 0.5, 0.75, 0.9, 0.95, 0.96, 0.97, 0.975, 0.98, 0.99), na.rm=TRUE) > > class(Valores) > [1] "numeric" > > as.data.frame(Valores) >Valores > 0%5.66e+00 > 1%4.231960e+01 > 2%6.627980e+01 > 2.5% 7.984900e+01 > 3%9.523880e+01 > 5%1.658285e+02 > 10% 5.012610e+02 > 25% 5.148675e+03 > 50% 6.589807e+04 > 75% 5.851804e+05 > 90% 3.594278e+06 > 95% 9.635249e+06 > 96% 1.274523e+07 > 97% 1.771101e+07 > 97.5% 2.212963e+07 > 98% 2.902357e+07 > 99% 5.281599e+07 > Me parece recordar que en la lista ya se consultó, pero sinceramente no > encuentro la respuesta. ¿Es posible pedirle a R que presente los números > sin pasarlos al formato exponencial? La única opción que encontré es > dividirlos por Millón (M<-100) y luego round(Valores, 3) por ejemplo, y > así funciona. Pero, ¿No hay una forma de evitar la notación sin transformar? > Gracias y 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 > > ___ R-help-es mailing list R-help-es@r-project.org https://stat.ethz.ch/mailman/listinfo/r-help-es
Re: [R-es] Método S3 paquete
Hola Rubén, Muchas gracias. Un saludo, Guillermo > Hola a ambos, > > Otra referencia que puede ser de interés es: > http://r-pkgs.had.co.nz y también http://adv-r.had.co.nz (las dos de > Hadley Wickham...) > > Un saludo, Rubén. > > > El 27/07/2015 a las 10:46, guillermo.vi...@uv.es escribió: > > Hola Carlos, > > > > Muchas gracias por el enlace, me ha sido de gran ayuda. Ya he entendido > > cómo funciona el sistema S3. > > > > Un saludo, > > > > Guillermo > > > >> Hola, ¿qué tal? > >> > >> Sigue > > http://www.datanalytics.com/2011/08/04/desarrollo-de-paquetes-con-r-iv-funciones-genericas/ > >> a rajatabla y lo tendrás. > >> > >> Un saludo, > >> > >> Carlos J. Gil Bellosta > >> http://www.datanalytics.com > >> > >> P.D.: Si te fijas bien, no estás siguiendo esa guía "a rajatabla". > >> > >> El día 23 de julio de 2015, 16:26, escribió: > >>> Hola, > >>> > >>> Estoy tratando de crear un método S3 llamado "anthr" dentro del paquete > >>> que estoy desarrollando, cuyo argumento principal es "res" que > >>> básicamente es una lista con un solo componente. Pero si el segundo > >>> argumento llamado "oneSize" es FALSE, "res" es una lista de listas. > >>> > >>> Lo que he escrito hasta el momento es lo siguiente: > >>> > >>> anthr <- function(res, oneSize, nsizes){ > >>>UseMethod("anthr") > >>> } > >>> > >>> anthr.tri <- function(res, oneSize, nsizes){ > >>> > >>>if(oneSize){ > >>> cases <- c() > >>> cases <- res$meds > >>>}else{ > >>> cases <- list() > >>> for (i in 1 : (nsizes - 1)){ > >>>cases[[i]] <- res[[i]]$meds > >>> } > >>>} > >>>return(cases) > >>> } > >>> > >>> El problema cuando instalo el paquete y utilizo este método, es que R no > >>> me reconoce que "res" sea una lista. En concreto, me aparece este error: > >>> > >>> Error in UseMethod("anthr") : > >>>no applicable method for 'anthr' applied to an object of class "list" > >>> > >>> He tratado de añadir esto: > >>> > >>> tri <- function(x){ > >>> value <- list(meds = x$meds) > >>> attr(value, "class") <- "tri" > >>> value > >>> } > >>> > >>> pero sigue sin funcionarme. ¿Alguien puede ofrecerme alguna ayuda? . > >>> > >>> Muchas gracias de antemano. > >>> > >>> Un saludo, > >>> > >>> Guillermo > >>> > >>> ___ > >>> R-help-es mailing list > >>> R-help-es@r-project.org > >>> https://stat.ethz.ch/mailman/listinfo/r-help-es > >> > > ___ > > R-help-es mailing list > > R-help-es@r-project.org > > https://stat.ethz.ch/mailman/listinfo/r-help-es > > > > ___ > R-help-es mailing list > R-help-es@r-project.org > https://stat.ethz.ch/mailman/listinfo/r-help-es > > ___ R-help-es mailing list R-help-es@r-project.org https://stat.ethz.ch/mailman/listinfo/r-help-es
Re: [R-es] Método S3 paquete
Hola Carlos, Muchas gracias por el enlace, me ha sido de gran ayuda. Ya he entendido cómo funciona el sistema S3. Un saludo, Guillermo > Hola, ¿qué tal? > > Sigue http://www.datanalytics.com/2011/08/04/desarrollo-de-paquetes-con-r-iv-funciones-genericas/ > a rajatabla y lo tendrás. > > Un saludo, > > Carlos J. Gil Bellosta > http://www.datanalytics.com > > P.D.: Si te fijas bien, no estás siguiendo esa guía "a rajatabla". > > El día 23 de julio de 2015, 16:26, escribió: > > Hola, > > > > Estoy tratando de crear un método S3 llamado "anthr" dentro del paquete > > que estoy desarrollando, cuyo argumento principal es "res" que > > básicamente es una lista con un solo componente. Pero si el segundo > > argumento llamado "oneSize" es FALSE, "res" es una lista de listas. > > > > Lo que he escrito hasta el momento es lo siguiente: > > > > anthr <- function(res, oneSize, nsizes){ > > UseMethod("anthr") > > } > > > > anthr.tri <- function(res, oneSize, nsizes){ > > > > if(oneSize){ > > cases <- c() > > cases <- res$meds > > }else{ > > cases <- list() > > for (i in 1 : (nsizes - 1)){ > > cases[[i]] <- res[[i]]$meds > > } > > } > > return(cases) > > } > > > > El problema cuando instalo el paquete y utilizo este método, es que R no > > me reconoce que "res" sea una lista. En concreto, me aparece este error: > > > > Error in UseMethod("anthr") : > > no applicable method for 'anthr' applied to an object of class "list" > > > > He tratado de añadir esto: > > > > tri <- function(x){ > > value <- list(meds = x$meds) > > attr(value, "class") <- "tri" > > value > > } > > > > pero sigue sin funcionarme. ¿Alguien puede ofrecerme alguna ayuda? . > > > > Muchas gracias de antemano. > > > > Un saludo, > > > > Guillermo > > > > ___ > > R-help-es mailing list > > R-help-es@r-project.org > > https://stat.ethz.ch/mailman/listinfo/r-help-es > > ___ R-help-es mailing list R-help-es@r-project.org https://stat.ethz.ch/mailman/listinfo/r-help-es
[R-es] Método S3 paquete
Hola, Estoy tratando de crear un método S3 llamado "anthr" dentro del paquete que estoy desarrollando, cuyo argumento principal es "res" que básicamente es una lista con un solo componente. Pero si el segundo argumento llamado "oneSize" es FALSE, "res" es una lista de listas. Lo que he escrito hasta el momento es lo siguiente: anthr <- function(res, oneSize, nsizes){ UseMethod("anthr") } anthr.tri <- function(res, oneSize, nsizes){ if(oneSize){ cases <- c() cases <- res$meds }else{ cases <- list() for (i in 1 : (nsizes - 1)){ cases[[i]] <- res[[i]]$meds } } return(cases) } El problema cuando instalo el paquete y utilizo este método, es que R no me reconoce que "res" sea una lista. En concreto, me aparece este error: Error in UseMethod("anthr") : no applicable method for 'anthr' applied to an object of class "list" He tratado de añadir esto: tri <- function(x){ value <- list(meds = x$meds) attr(value, "class") <- "tri" value } pero sigue sin funcionarme. ¿Alguien puede ofrecerme alguna ayuda?. Muchas gracias de antemano. Un saludo, Guillermo ___ R-help-es mailing list R-help-es@r-project.org https://stat.ethz.ch/mailman/listinfo/r-help-es
Re: [R-es] Duda glmer
Muchas gracias por tu respuesta y el código Olivier, me es de mucha ayuda. Un saludo, Guillermo > Guillermo, > > me temo que en tu simulación, el enfoque multinivel carezca de sentido. > Ten en cuenta que en este tipo de modelo la agrupación de los datos, es decir el segundo nivel en la jerarquía, > no puede ser en sólo 2 categorías o grupos, sino en un numero considerable de grupos que justifique el análisis de la variabilidad entre dichos grupos. > Prueba más bien la siguiente simulación: > > > set.seed(100) > beta_0 <- -0.9 > beta_1 <- 0.02 > sigma <- 1 > q=200; n=50 > re <- rnorm(q)*sigma # efectos aleatorios asociado al grupo > u <- rep(re,each=n) > x <- floor(runif(n*q,min=0,max=10)) > p <- exp( beta_0 + beta_1*x + u) / (1+ exp( beta_0 + beta_1*x + u)) > y <-rbinom(n*q,1,p) > datos=data.frame(y,u,grupo=rep(1:q,each=n)) > > fit=glmer(y~x+(1|grupo),data=datos,family=binomial) > summary(fit) > > > Generalized linear mixed model fit by maximum likelihood (Laplace > Approximation) [glmerMod] > Family: binomial ( logit ) > Formula: y ~ x + (1 | grupo) >Data: datos > > AIC BIC logLik deviance df.resid > 11603.3 11625.0 -5798.7 11597.3 9997 > > Scaled residuals: > Min 1Q Median 3Q Max > -2.8102 -0.6685 -0.4591 0.8800 4.0097 > > Random effects: > Groups NameVariance Std.Dev. > grupo (Intercept) 0.9758 0.9878 > Number of obs: 1, groups: grupo, 200 > > Fixed effects: > Estimate Std. Error z value Pr(>|z|) > (Intercept) -0.911938 0.082754 -11.020 < 2e-16 *** > x0.027207 0.008101 3.359 0.000783 *** > --- > Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1 > > > > - Mensaje original - > De: "Guillermo Vinue" > Para: r-help-es@r-project.org > Enviados: Miércoles, 10 de Junio 2015 13:10:26 > Asunto: [R-es] Duda glmer > > Hola, > > Tengo una base de datos con estructura jerárquica en la que quiero > clasificar observaciones en distintas categorías. > > En el caso más simple, tengo una variable con dos categorías (variable > Y1) y dentro de cada una de ellas hay otras dos categorías (variable > Y2). Además tengo una variable explicativa cuantitativa discreta X. > > El banco de datos sería de este tipo: > > X Y1 Y2 > 5 0 1 > 9 0 0 > 2 0 1 > 8 0 0 > 9 0 0 > 6 0 0 > 4 1 0 > 5 1 1 > 5 1 1 > 6 1 1 > 0 1 1 > 6 1 0 > > El enfoque estadístico que quiero plantear es un modelo lineal > generalizado mixto con efectos aletorios para tener en cuenta esta > estructura jerárquica o multinivel. > > Para analizar si este enfoque es adecuado he simulado unos datos. En > primer lugar, trato de clasificar las observaciones en las categorías de > Y1 mediante un glm y obtengo estimadores de los coeficientes que son muy > similares a los valores simulados, como era esperable. > > Sin embargo, cuando trato de utilizar un glmer con un intercepto > aleatorio y pendientes fijas para tratar de distinguir entre categorías, > obtengo estimadores muy alejados de los valores simulados. > > He leído mucha de la bibliografía específica (por ejemplo, los capítulos > relacionados con los glmer de los libros de Bates o Goldstein) y he > buscado por internet pero no logro encontrar el error en mi procedimiento . > > Adjunto el código de la simulación que llevo a cabo en R por si alguien > me pudiera hacer alguna indicación. > > Muchas gracias de antemano. > > Un saludo, > > Guillermo > > ___ > R-help-es mailing list > R-help-es@r-project.org > https://stat.ethz.ch/mailman/listinfo/r-help-es > > ___ R-help-es mailing list R-help-es@r-project.org https://stat.ethz.ch/mailman/listinfo/r-help-es
[R-es] Duda glmer
Hola, Tengo una base de datos con estructura jerárquica en la que quiero clasificar observaciones en distintas categorías. En el caso más simple, tengo una variable con dos categorías (variable Y1) y dentro de cada una de ellas hay otras dos categorías (variable Y2). Además tengo una variable explicativa cuantitativa discreta X. El banco de datos sería de este tipo: X Y1 Y2 5 0 1 9 0 0 2 0 1 8 0 0 9 0 0 6 0 0 4 1 0 5 1 1 5 1 1 6 1 1 0 1 1 6 1 0 El enfoque estadístico que quiero plantear es un modelo lineal generalizado mixto con efectos aletorios para tener en cuenta esta estructura jerárquica o multinivel. Para analizar si este enfoque es adecuado he simulado unos datos. En primer lugar, trato de clasificar las observaciones en las categorías de Y1 mediante un glm y obtengo estimadores de los coeficientes que son muy similares a los valores simulados, como era esperable. Sin embargo, cuando trato de utilizar un glmer con un intercepto aleatorio y pendientes fijas para tratar de distinguir entre categorías, obtengo estimadores muy alejados de los valores simulados. He leído mucha de la bibliografía específica (por ejemplo, los capítulos relacionados con los glmer de los libros de Bates o Goldstein) y he buscado por internet pero no logro encontrar el error en mi procedimiento. Adjunto el código de la simulación que llevo a cabo en R por si alguien me pudiera hacer alguna indicación. Muchas gracias de antemano. Un saludo, Guillermo simulation_glmer.R Description: Binary data ___ R-help-es mailing list R-help-es@r-project.org https://stat.ethz.ch/mailman/listinfo/r-help-es