Copiar objetos de R con la función dput()

Tenéis una duda sobre programación en R y recurrís a StackOverflow para preguntar y esperar una respuesta. Como se recomienda en ese foro, la experiencia del que pregunta y del que responde mejora si se ponen ejemplos reales y fácilmente replicables y reproducibles. Sin embargo, con los datos que tenemos, hay que facilitarlos de algún modo para que nos respondan. Esto lo podemos hacer guardando los datos en algún formato (.csv por ejemplo), subiéndolos a internet y poniendo un enlace a los mismos que copiamos en el foro. Pero esto hace que los que vayan a responder se lo descarguen y carguen en sus ordenadores. En esta entrada os voy a mostrar cómo copiar objetos de R con la función dput().

Copiar objetos de R con la función dput()

Hay un paso mucho más rápido y sencillo de poder facilitarles el acceso a tus datos. Vamos a emplear un conjunto de datos contenido en R que tiene por nombre iris. Lo podemos cargar empleando la función data().

data(iris)

Imaginemos ahora que estos datos son nuestros, producidos por nosotros mismos, y que nadie más tiene acceso. Cuando nos da el error de programación, tenemos que facilitar su reproducibilidad a las posibles personas que puedan respondernos.

Como iris es un objeto grande, vamos a trabajar con sus primeras filas. Si vemos sus primeras 6 líneas con la función head(), podríamos copiar el objeto íntegro en el foro.

head(iris)
  Sepal.Length Sepal.Width Petal.Length Petal.Width Species
1          5.1         3.5          1.4         0.2  setosa
2          4.9         3.0          1.4         0.2  setosa
3          4.7         3.2          1.3         0.2  setosa
4          4.6         3.1          1.5         0.2  setosa
5          5.0         3.6          1.4         0.2  setosa
6          5.4         3.9          1.7         0.4  setosa

Función dput() para copiar rápidamente objetos en R

Con la función dput() podemos copiar rápidamente objetos de R. De este modo, podemos copiar y pegar todo el conjunto de datos manteniendo todos los metadatos del objeto en cuestión.

dput(head(iris))
structure(list(Sepal.Length = c(5.1, 4.9, 4.7, 4.6, 5, 5.4), 
    Sepal.Width = c(3.5, 3, 3.2, 3.1, 3.6, 3.9), Petal.Length = c(1.4, 
    1.4, 1.3, 1.5, 1.4, 1.7), Petal.Width = c(0.2, 0.2, 0.2, 
    0.2, 0.2, 0.4), Species = structure(c(1L, 1L, 1L, 1L, 1L, 
    1L), .Label = c("setosa", "versicolor", "virginica"), class = "factor")), .Names = c("Sepal.Length", 
"Sepal.Width", "Petal.Length", "Petal.Width", "Species"), row.names = c(NA, 
6L), class = "data.frame")

La ejecución de dput() nos da como resultado una función structure() con el contenido de toda información relacionada con el objeto en cuestión, incluyendo todos sus metadatos, el tipo de variables que son, etc.

Reproducibilidad del resultado de dput()

Copiando y pegando el resultado de dput(), así como añadiéndole un nombre nuevo al objeto (por ejemplo nuevo_iris), podemos replicar rápidamente el conjunto íntegro de los datos en otro ordenador.

nuevo_iris <- structure(list(Sepal.Length = c(5.1, 4.9, 4.7, 4.6, 5, 5.4), 
    Sepal.Width = c(3.5, 3, 3.2, 3.1, 3.6, 3.9), Petal.Length = c(1.4, 
    1.4, 1.3, 1.5, 1.4, 1.7), Petal.Width = c(0.2, 0.2, 0.2, 
    0.2, 0.2, 0.4), Species = structure(c(1L, 1L, 1L, 1L, 1L, 
    1L), .Label = c("setosa", "versicolor", "virginica"), class = "factor")), .Names = c("Sepal.Length", 
"Sepal.Width", "Petal.Length", "Petal.Width", "Species"), row.names = c(NA, 
6L), class = "data.frame")

print(nuevo_iris) # vemos el conjunto de datos recién creado

Deja un comentario