Foro de discusión y soporte para usuarios de R

Un foro abierto a todos los temas relacionados con R que quiera.
Nota: Una url estable a este foro es https://knuth.uca.es/R-foro.

Rattle: cómo copiar el código

de Igor Gutiérrez -
Buenas:

Estoy trabajando con la interfaz de Rattle puesto que me parece muy interesante para mi propósito. Me gustaría copiar el código que genera los outputs para poder incluirlo en mi archivo .Rnw de Sweave y así producir mis informes de manera automática.

¿Alguien sabe si es posible hacer esto?

Muchas gracias de antemano

Curso básico y gratuito de introducción a R

de O Ka -

http://jjgibaja.net/curso-basico-y-gratuito-de-introduccion-a-r/comment-page-1/

Curso básico y gratuito de introducción a R

Para ayudar a quienes quieran dar este paso, Carlos Gil Bellosta y yo hemos diseñado un curso de R básico, con las siguientes características:

  • Es gratuito.
  • No da derecho a diplomas o certificados de ningún tipo.
  • No es presencial.
  • Dura 5 semanas.
  • Las plazas son ilimitadas.
  • Está basado en el autoestudio: cada participante tendrá que leer y trabajar por su cuenta.
  • Es colaborativo: hemos desarrollado una plataforma web para que quienes sigan el curso puedan plantear preguntas y, como parte fundamental del programa, traten de responder las de sus compañeros.
  • Está supervisado por Carlos y yo: nos encargaremos del programa del curso así como de tratar de dar apoyo de última instancia a las preguntas planteadas por los estudiantes.
  • Es genérico. Cada cual quiere aprender R por un motivo distinto: unos, para analizar encuestas; otros, por su interés en la minería de datos; algunos, para analizar series temporales,… El curso está pensado para llevar a cada cual hasta el mismo umbral de su tema de interés, de forma que pueda, después de él, avanzar en el tema por su cuenta. Pero sin hacer especial hincapié en ningún asunto concreto.
  • El contenido estadístico será mínimo (se limitará a algo de estadística descriptiva y poco más).

Los interesados encontrarán más información en este documento.

Para registrarte, basta con que te des de alta en cursoRbasico.usaR.org.es. Y si conoces a alguien potencialmente interesado en él, ¡no dudes en invitarlo!

Esperamos que esta iniciativa resulte de tu interés.

por favor ayuda con este algoritmo

de Jhon Alex Rozo -
Diseñar un algoritmo de inversion para generar la variable aleatoria max(X1;X2; ::;Xn),
con X1; :::;Xn variables aleatorias i.i.d. con funcion de distribucion F (supongamos
F1 conocida).



agradesco su ayuda

sobre la función which()

de Igor Gutiérrez -
Buenas:

La función which() me resulta muy útil porque permite seleccionar observaciones que cumplen una determinada condición y hacer con ellas toda serie de manipulaciones.

Sin embargo me he encontrado con un pequeño límite y me gustaría lanzar pregunta sobre el tema.

Supongamos que queremos graficar una variable y resaltar de azul aquellos puntos (observaciones) que cumplan una determinada condición. Esto se haría de la siguiente manera:

>plot(variable)
>points(which(condición),variable[which(condición)], col='blue')

Hasta aquí ningún problema. Ahora bien, supongamos que queremos graficar la misma variable pero con sus valores ordenados de menor a mayor. Esto lo estoy haciendo de la siguiente manera:

>plot(sort(variable))

Ahora me gustaría resaltar en azul aquellos puntos de la gráfica que cumplan la condición. Sin embargo, si hago

>points(which(condición), (sort(variable))[which(condición)], col='blue')

las abcisas no son precisamente las que yo busco, pues no van emparejadas con la ordenada que les correspondería, ya que éstas últimas han sido reordenadas de menor a mayor según los valores de mi variable.

Para solucionar este problema he probado con las funciones sort() y order() pero no acabo de dar con la forma correcta. Lo único que me ha funcionado es ordenar todo el dataframe según mi variable (hay funciones desarrolladas por otros como sort.data.frame()) y luego trabajar como si no hiciera falta ordenar.

Supongo que habrá una forma más ágil.

Muchas gracias de antemano

Sweave: cómo introducir gráficos con un ciclo for

de Igor Gutiérrez -
Buenas!

Estoy utilizando Sweave para generar documentos en Latex, todo esto a través de R-Studio.

Me interesa sobre todo automatizar las órdenes a R de tal forma que cuando cambie la base de datos a analizar Sweave me lo compile sin problemas y sin apenas tener que modificar el archivo .Rnw.

He logrado programar un resumen de estadísticos principales así como tablas de recuentos de tal forma que, introduciendo al principio del documento el conjunto de variables a analizar, Sweave me genera todo a través de un ciclo for, de la primera a la última variable.

En estos momentos estoy intentando automatizar la generación de gráficos para que me produzca un gráfico para cada una de las variables introduciento un ciclo for en un solo chunk.

La verdad es que he encontrado poca documentación al respecto, ahí va un ejemplo:

http://www.statistik.lmu.de/~leisch/Sweave/FAQ.html#x1-11000A.9

He hecho pruebas con el chunk que proponen pero no logro nada:

<<results=tex,echo=FALSE>>=
for(i in 1:4){
file=paste("myfile", i, ".eps", sep="")
postscript(file=file, paper="special", width=6, height=6)
plot(rnorm(100)+i)
dev.off()
cat("\\includegraphics{", file, "}\n\n", sep="")
}
@

Si alguien pudiera ayudarme con este tema le estaría tremendamente agradecido.

Eskerrik asko/Muchas gracias

¿Cómo se puede hacer un bucle con varias columnas de una tabla? cor.test()

de O Ka -
Hola estoy empezando en esto de R. Tengo una tabla con 20-columnas y me pregunto como puedo automatizar para que cada columna la utilice para correlacionarla con cor.test().


¿Pongo las columnas concatenadas?
c(tabla[,5:24])->correl

¿No hace falta?
tabla[,5:24]->correl

¿Como se añade eso para automatizarlo mediante for (i) {}?

Como el cor.test() necesita dos vectores debería dar valor X e Y en cada análisis a cada columna y así hasta enfrentarlas todas entre sí.

¿Alguna pincelada para avanzar un pasito? Sé que me puede faltar teoría sobre la diferencia de data.frame(), apply()... Pero sigo buscando.

Un saludo.





Modificar cadenas de texto que son argumentos de otras funciones.

de Nerea Valcarcel -
Buenas de nuevo,

para terminar de automatizar mi script, me gustaría un último cambio. Tengo que aplicarlo a varios archivos que están organizados en diferentes carpetas. Cada carpeta tiene el nombre de una muestra, y el archivo de dentro se llama igual de la carpeta.

A lo largo del programa, recurro al nombre del archivo/carpeta 3 veces, vamos a poner que la carpeta y el archivo se llaman muestra. Primero lo uso para establecer el directorio de trabajo, ya que el script genera varios archivos de resultados que necesito que se guarden en la carpeta de la muestra.

setwd ("D:/Analisis/Muestra")

Después incluyo el nombre para importar el archivo:

brutos <- read.table ("Muestra", header=FALSE, sep=" ", skip=58, fill=TRUE)

Y por último para nombrar el archivo de resultados:

write.table(final, "Muestra.txt", sep=" ", 
  col.names=TRUE, row.names=FALSE, quote=TRUE, na="NA")


Esto tengo que hacerlo con un montón de muestras, y además el número es creciente. Lo que busco es alguna forma de poder sustituir de una vez el nombre de la muestra en los 3 sitios para hacerlo lo más rápido posible.

He intentado usar substr y aunque he conseguido que el nombre cambiase, cuando incluyo el argumento de substr en alguna de las expresiones anteriores me da error de texto.

¿Se os ocurre alguna forma de que pudiera hacerlo?

Gracias de antemano,

Saludos

Ayuda con algoritmo en R

de Mauricio Bernal -
 si no es mucha molestia me podrían ayudar con este 
Hacer un programa que simule el crecimiento exponencial de una población con 
tasa finita de crecimiento  λ y población inicial N0. Hacer un gráfico con el 
tamaño poblacional hasta un tiempo t = 100.

gracias

Iteraciones con retroalimentación

de Juan Miguel Requena Mullor -
Hola, me gustaría que me ayudaran en lo siguiente:
He creado una función con function y necesito iterarla n veces pero que el output de cada iteración sea el input de la siguiente. 
He probado haciendo loops mezclados con otras herramientas pero no doy con la tecla, ¿alguien sabe qué función hace esto?
Muchas gracias.