Tendrías que ser más específico con lo del error para poderte ayudar. Para entender mi ejemplo tendrías que estar familiarizado con el pipe ( |> nativo que yo uso, o %>% que es equivalente) y con el “tidyverse”. Para el caso concreto de las operaciones por columnas te recomiendo que leas este artículo: https://dplyr.tidyverse.org/articles/rowwise.html
Saludos, Emilio PS: La solución sum(x[x>0]) serviría pero haciendo el bucle por FILAS, que es lo que quieres, y guardándolo en algún vector. > El 2 ene 2023, a las 11:23, Manuel Mendoza <mmend...@fulbrightmail.org> > escribió: > > Gracias Emilio y Proyecto R-UCA, no consigo implementar ninguna de vuestras > propuestas. > En la de Emilio sale bien hasta las funciones, incluidas, pero no entiendo > a partir de: d |> > y me da error. > > Respecto a sum(x[x>0]), lamento deciros que tampoco lo entiendo ni > consigo implementarlo > > ¿Podríais darme más detalles? > > Gracias, > Manuel > > > El lun, 2 ene 2023 a las 10:23, Proyecto R-UCA (<r-...@uca.es>) escribió: > >> Buenas, >> >> Sin usar dplyr, >> >> Se puede hacer un bucle en las columnas y para cada columna >> >> sum(x[x>0]) >> >> sum(x[x < 0]) >> >> Un saludo. >> >> El lun, 02-01-2023 a las 09:02 +0100, Emilio L. Cano escribió: >>> Hola, >>> >>> Este sería un ejemplo reproducible rápido. A mí para esto me gusta >> rowise() de {dplyr}. En c_across() se pueden seleccionar las columnas a >>> conveniencia. Seguramente haya una forma de evitar crear las funciones. >> Si la suma la quieres en valor absoluto multiplicas por -1 en >>> suma_neg y listo. >>> >>> Un saludo, >>> Emilio >>> >>> >>>> set.seed(2023) >>>> d <- data.frame(a = round(rnorm(10), 1), >>> + b = round(rnorm(10), 1), >>> + c = round(rnorm(10), 1)) >>>> d >>> a b c >>> 1 -0.1 0.3 -0.4 >>> 2 -1.0 -0.4 -0.3 >>> 3 -1.9 0.6 1.2 >>> 4 -0.2 0.7 0.2 >>> 5 -0.6 -0.6 -0.4 >>> 6 1.1 0.7 -1.8 >>> 7 -0.9 0.6 -0.6 >>> 8 1.0 0.5 -0.9 >>> 9 -0.4 0.9 1.5 >>> 10 -0.5 0.6 2.7 >>>> >>>> library(dplyr) >>>> >>>> suma_pos <- function(x){ >>> + sum((x>0)*x) >>> + } >>>> suma_neg <- function(x){ >>> + sum((x<0)*x) >>> + } >>>> >>>> d |> >>> + rowwise() |> >>> + mutate(positivos = suma_pos(c_across()), >>> + negativos = suma_neg(c_across())) >>> # A tibble: 10 × 5 >>> # Rowwise: >>> a b c positivos negativos >>> <dbl> <dbl> <dbl> <dbl> <dbl> >>> 1 -0.1 0.3 -0.4 0.3 -0.5 >>> 2 -1 -0.4 -0.3 0 -1.7 >>> 3 -1.9 0.6 1.2 1.8 -1.9 >>> 4 -0.2 0.7 0.2 0.9 -0.2 >>> 5 -0.6 -0.6 -0.4 0 -1.6 >>> 6 1.1 0.7 -1.8 1.8 -1.8 >>> 7 -0.9 0.6 -0.6 0.6 -1.5 >>> 8 1 0.5 -0.9 1.5 -0.9 >>> 9 -0.4 0.9 1.5 2.4 -0.4 >>> 10 -0.5 0.6 2.7 3.3 -0.5 >>> >>> >>> >>>> El 2 ene 2023, a las 6:31, Manuel Mendoza <mmend...@fulbrightmail.org> >> escribió: >>>> >>>> Buenos días, de un conjunto de variables, quiero obtener la suma de los >>>> valores positivos de cada fila, por una parte, y la de los negativos >> por >>>> otra. Qué variables toman valores positivos y negativos varía de una >> fila a >>>> otra, claro. >>>> Gracias por vuestra ayuda, >>>> Manuel >>>> >>>> [[alternative HTML version deleted]] >>>> >>>> _______________________________________________ >>>> R-help-es mailing list >>>> R-help-es@r-project.org >>>> >> https://urldefense.com/v3/__https://stat.ethz.ch/mailman/listinfo/r-help-es__;!!D9dNQwwGXtA!XPbjkJgKEEP5dmap64bNfzfAmIe4ArK_nN4H9-QIBPAihE4aO-RS6q6YAaM3IT-sP9qA0PqeGoqQF7gIlec$ >>>> >>> >>> >>> [[alternative HTML version deleted]] >>> >>> _______________________________________________ >>> R-help-es mailing list >>> R-help-es@r-project.org >>> >> https://urldefense.com/v3/__https://stat.ethz.ch/mailman/listinfo/r-help-es__;!!D9dNQwwGXtA!XPbjkJgKEEP5dmap64bNfzfAmIe4ArK_nN4H9-QIBPAihE4aO-RS6q6YAaM3IT-sP9qA0PqeGoqQF7gIlec$ >>> >> _______________________________________________ >> 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 [[alternative HTML version deleted]] _______________________________________________ R-help-es mailing list R-help-es@r-project.org https://stat.ethz.ch/mailman/listinfo/r-help-es