Being a new user here , my questions are not being fully answered due to not being reproducible. I read the thread relating to producing reproducible code but to avail. Specifically lost on how to use the dput() function.
Could someone provide a step by step on how to use the dput() using the iris df for eg it would be very helpful.
Details. dput opens file and deparses the object x into that file. The object name is not written (unlike dump ). If x is a function the associated environment is stripped.
There are four things you need to include to make your example reproducible: required packages, data, code, and a description of your R environment. Packages should be loaded at the top of the script, so it's easy to see which ones the example needs.
Using the iris
dataset, which is handily included into R
, we can see how dput()
works:
data(iris) 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
Now we can get the whole dataset using dput(iris)
. In most situations, a whole dataset is unnecessary to provide for a Stackoverflow question, as a few lines of the relevant variables suffice as a working data example.
Two things come in handy: The head()
function outputs only the first six rows of a dataframe/matrix. Also, the indexing in R
(via brackets) allows you to select only specific columns.
Therefore, we can restrict the output of dput()
using a combination of these two:
dput(head(iris[, c(1, 3)])) structure(list(Sepal.Length = c(5.1, 4.9, 4.7, 4.6, 5, 5.4), Petal.Length = c(1.4, 1.4, 1.3, 1.5, 1.4, 1.7)), .Names = c("Sepal.Length", "Petal.Length"), row.names = c(NA, 6L), class = "data.frame")
will give us the code to reproduce the first (up to) six rows of column 1 and 3 of the iris
dataset.
df <- structure(list(Sepal.Length = c(5.1, 4.9, 4.7, 4.6, 5, 5.4), Petal.Length = c(1.4, 1.4, 1.3, 1.5, 1.4, 1.7)), .Names = c("Sepal.Length", "Petal.Length"), row.names = c(NA, 6L), class = "data.frame") > df Sepal.Length Petal.Length 1 5.1 1.4 2 4.9 1.4 3 4.7 1.3 4 4.6 1.5 5 5.0 1.4 6 5.4 1.7
If the first rows do not suffice, we can skip using head()
and rely on indexing only:
dput(iris[1:20, c(1, 3)]) structure(list(Sepal.Length = c(5.1, 4.9, 4.7, 4.6, 5, 5.4, 4.6, 5, 4.4, 4.9, 5.4, 4.8, 4.8, 4.3, 5.8, 5.7, 5.4, 5.1, 5.7, 5.1 ), Petal.Length = c(1.4, 1.4, 1.3, 1.5, 1.4, 1.7, 1.4, 1.5, 1.4, 1.5, 1.5, 1.6, 1.4, 1.1, 1.2, 1.5, 1.3, 1.4, 1.7, 1.5)), .Names = c("Sepal.Length", "Petal.Length"), row.names = c(NA, 20L), class = "data.frame")
will give us the the first twenty rows:
df <- structure(list(Sepal.Length = c(5.1, 4.9, 4.7, 4.6, 5, 5.4, 4.6, 5, 4.4, 4.9, 5.4, 4.8, 4.8, 4.3, 5.8, 5.7, 5.4, 5.1, 5.7, 5.1 ), Petal.Length = c(1.4, 1.4, 1.3, 1.5, 1.4, 1.7, 1.4, 1.5, 1.4, 1.5, 1.5, 1.6, 1.4, 1.1, 1.2, 1.5, 1.3, 1.4, 1.7, 1.5)), .Names = c("Sepal.Length", "Petal.Length"), row.names = c(NA, 20L), class = "data.frame") > df Sepal.Length Petal.Length 1 5.1 1.4 2 4.9 1.4 3 4.7 1.3 4 4.6 1.5 5 5.0 1.4 6 5.4 1.7 7 4.6 1.4 8 5.0 1.5 9 4.4 1.4 10 4.9 1.5 11 5.4 1.5 12 4.8 1.6 13 4.8 1.4 14 4.3 1.1 15 5.8 1.2 16 5.7 1.5 17 5.4 1.3 18 5.1 1.4 19 5.7 1.7 20 5.1 1.5
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With