Acerca de… hacer que R nos pregunte

February 9, 2011
By

This post was kindly contributed by Acerca de... » R - go there to comment and to read the full post.

Hola,

A veces cuando estamos analizando datos, nos salen resultados raros que nos hacen revisar los dataframes en busca de pequeños errores. Normalmente estos errores son cosas sistemáticas producidas por la importación de los datos, valores perdidos, etc. que se pueden solucionar fácilmente con replace() o cosas así. Pero a veces cada pequeño error necesita que lo revisemos y tomemos una decisión.

Aquí os presento una cosa que he descubierto par enfrentarme a ese problema… bueno, supongo que los erreros añejos lo tiene superado. La cosa es esta, tengo información sobre una serie de especies que aparecen o no en unas parcelas. De otra base de datos he obtenido si dichas especies son anuales o perennes, pero no todas las especies de mi dataframe están en la base de datos, así que me quedan especies con NA. Pero necesito ir especie a especie confirmando si es a o p. Lo que he hecho es esto:

Mis datos:

Spxparc<-data.frame(especie=c(rep("sp1",5),rep("sp2",4),rep("sp3",2),rep("sp4",5),rep("sp6",4))
                   ,parcela=c(c(1:5),c(1:4),c(1,2),c(1:5),c(1:4))
                   ,anuper=c("a","p",NA,"a","p",rep("a",10),NA,NA,NA,NA,NA)
                   )

Lo que quiero es que R vaya de NA en NA y me pregunte:


#para cada fila del df
for(i in c(1:nrow(Spxparc)))
{
  #si en esa fila anuper es NA
  while(is.na(Spxparc$anuper[i]))
  {
    #enseñale al usuario a que especie corresponde
    print(Spxparc$especie[i])
    #pidele al usuario que te diga si esa especie es a o p
    input<-scan(n=1,what="character")
    #escribe lo que te diga el usuario en la tabla
    Spxparc$anuper[i]<-input
  }
}

Esto es todo. Espero que os sea útil.


Filed under: open source, R Tagged: R cram

Tags: , ,

Comments are closed.