How to put the output of `dput` in one line in R?

311 Views Asked by At

How to make the output of dput be displayed in one line in R?

How to copy to the clipboard the string obtained with dput?

3

There are 3 best solutions below

3
Darren Tsai On BEST ANSWER

Take dat <- head(iris) for example:

  1. Make one-line output for dput() displayed in the console:
cat(capture.output(dput(dat)), "\n", sep = "")

Output:

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), levels = c("setosa", "versicolor", "virginica"), class = "factor")), row.names = c(NA, 6L), class = "data.frame")
  1. Copy to the clipboard (Windows only):
writeClipboard(paste(capture.output(dput(dat)), collapse = ""))
1
Maël On

To copy paste directly the output of dput, you can use write.so with write_clip = T from the read.so package:

#devtools::install_github("alistaire47/read.so")
library(read.so)
write.so(head(iris), write_clip = TRUE)

output

iris <- data.frame(
  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")
)
2
envs_h_gang_5 On

Take dat <- head(iris) for example:

dat <- head(iris)

Install the packages--> "datapasta"

#install.packages(c("datapasta"), dependencies = TRUE)

Use dpasta (note: only works if you're using RStudio)

datapasta::dpasta(dat)

output-->

named list()
> data.frame(
+   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 = as.factor(c("setosa","setosa",
+                              "setosa","setosa","setosa","setosa"))
+ )
  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

Copy to the clipboard ( using Rstudio )-->

datapasta::dmdclip(dat)