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]]