Alejandro Ayala
2013-May-08 00:22 UTC
[R-es] Selección de valores específicos de una lista mediante una función
Si alguien puede ayudarme con el siguiente problema: Necesito seleccionar los valores dentro de una lista que cumplan con condiciones especificas reemplazando los valores antiguos por los nuevos (los valores de la lista están ordenados). Ejemplo: a<-list(c(1,2,2.5,3,3.3,4,4.1,4.7,5),c(1,1.2,2.1,3,3.2,5)) names(a)<-c("a1","a2") a$a1<-a$a1[a$a1>3] Mediante la siguiente función me permite realizar lo anterior rec<-function(indice,valor){ z<-paste0("a$a",indice) b<-paste0(z,"<-",z,"[",z,">",valor,"]") eval(parse(text=b),parent.frame()) } rec(1,3) Lo que necesito es crear una función que me reciba 3 parámetros rec<-function(lista,indice,valor) ya que me permitiría escoger la lista y las condiciones que deseo modificar en vista que tengo muchas listas con las cuales trabajar. Intente algo como esto pero si resultados favorables rec1<-function(lista,indice,valor){ a<-lista a$a.indice<-a$a.indice[a$a.indice>tiempo] return(a) } Gracias por su ayuda de antemano [[alternative HTML version deleted]]
Jorge I Velez
2013-May-08 03:26 UTC
[R-es] Selección de valores específicos de una lista mediante una función
Alejandro, Algo como esto? # ejemplo a<-list(c(1,2,2.5,3,3.3,4,4.1,4.7,5),c(1,1.2,2.1,3,3.2,5)) names(a)<-c("a1","a2") a$a1<-a$a1[a$a1>3] a # funcion f <- function(lista, indice, valor) which( lista[[indice]] > valor ) # cuales valores de la 2a "lista" de "a" son mayores que 3 f(a, 2, 3) # [1] 5 6 correspondientes a 3.2 y 5.0 # si quieres el valor en lugar de la posicion f2 <- function(lista, indice, valor){ l <- lista[[indice]] l[ l > valor ] } f2(a, 2, 3) # [1] 3.2 5.0 Un saludo, Jorge.- 2013/5/8 Alejandro Ayala <>> Si alguien puede ayudarme con el siguiente problema: > > Necesito seleccionar los valores dentro de una lista que cumplan con > condiciones especificas reemplazando los valores antiguos por los nuevos > (los valores de la lista están ordenados). > > Ejemplo: > > a<-list(c(1,2,2.5,3,3.3,4,4.1,4.7,5),c(1,1.2,2.1,3,3.2,5)) > names(a)<-c("a1","a2") > a$a1<-a$a1[a$a1>3] > > Mediante la siguiente función me permite realizar lo anterior > > rec<-function(indice,valor){ > z<-paste0("a$a",indice) > b<-paste0(z,"<-",z,"[",z,">",valor,"]") > eval(parse(text=b),parent.frame()) > } > > rec(1,3) > > Lo que necesito es crear una función que me reciba 3 parámetros > rec<-function(lista,indice,valor) > ya que me permitiría escoger la lista y las condiciones que deseo modificar > en vista que tengo muchas listas con las cuales trabajar. > > Intente algo como esto pero si resultados favorables > > rec1<-function(lista,indice,valor){ > a<-lista > a$a.indice<-a$a.indice[a$a.indice>tiempo] > return(a) > } > > Gracias por su ayuda de antemano > > [[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]]