Julien
Julien

Reputation: 1694

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

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?

Upvotes: 7

Views: 392

Answers (3)

envs_h_gang_5
envs_h_gang_5

Reputation: 51

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)

Upvotes: -1

Ma&#235;l
Ma&#235;l

Reputation: 52069

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")
)

Upvotes: 4

Darren Tsai
Darren Tsai

Reputation: 35584

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 = ""))

Upvotes: 9

Related Questions