Lấy cảm hứng từ chính bài đăng này, bây giờ tôi sử dụng một chức năng tiện dụng
reproduce(<mydata>)
khi tôi cần đăng lên StackOverflow.
HƯỚNG DẪN NHANH
Nếu myData
là tên của đối tượng của bạn để sao chép, hãy chạy như sau trong R:
install.packages("devtools")
library(devtools)
source_url("https://raw.github.com/rsaporta/pubR/gitbranch/reproduce.R")
reproduce(myData)
Chi tiết:
Chức năng này là một trình bao bọc thông minh để dput
và thực hiện các thao tác sau:
- tự động lấy mẫu một tập dữ liệu lớn (dựa trên kích thước và lớp. Có thể điều chỉnh kích thước mẫu)
- tạo ra một
dput
đầu ra
- cho phép bạn chỉ định mà các cột để xuất khẩu
- gắn vào mặt trước của nó
objName <- ...
để có thể dễ dàng sao chép + dán, nhưng ...
- Nếu làm việc trên máy mac, đầu ra được sao chép tự động vào bảng tạm, để bạn có thể chỉ cần chạy nó và sau đó dán vào câu hỏi của mình.
Nguồn có sẵn ở đây:
Thí dụ:
# sample data
DF <- data.frame(id=rep(LETTERS, each=4)[1:100], replicate(100, sample(1001, 100)), Class=sample(c("Yes", "No"), 100, TRUE))
DF có kích thước khoảng 100 x 102. Tôi muốn lấy mẫu 10 hàng và một vài cột cụ thể
reproduce(DF, cols=c("id", "X1", "X73", "Class")) # I could also specify the column number.
Cung cấp đầu ra sau:
This is what the sample looks like:
id X1 X73 Class
1 A 266 960 Yes
2 A 373 315 No Notice the selection split
3 A 573 208 No (which can be turned off)
4 A 907 850 Yes
5 B 202 46 Yes
6 B 895 969 Yes <~~~ 70 % of selection is from the top rows
7 B 940 928 No
98 Y 371 171 Yes
99 Y 733 364 Yes <~~~ 30 % of selection is from the bottom rows.
100 Y 546 641 No
==X==============================================================X==
Copy+Paste this part. (If on a Mac, it is already copied!)
==X==============================================================X==
DF <- structure(list(id = structure(c(1L, 1L, 1L, 1L, 2L, 2L, 2L, 25L, 25L, 25L), .Label = c("A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y"), class = "factor"), X1 = c(266L, 373L, 573L, 907L, 202L, 895L, 940L, 371L, 733L, 546L), X73 = c(960L, 315L, 208L, 850L, 46L, 969L, 928L, 171L, 364L, 641L), Class = structure(c(2L, 1L, 1L, 2L, 2L, 2L, 1L, 2L, 2L, 1L), .Label = c("No", "Yes"), class = "factor")), .Names = c("id", "X1", "X73", "Class"), class = "data.frame", row.names = c(1L, 2L, 3L, 4L, 5L, 6L, 7L, 98L, 99L, 100L))
==X==============================================================X==
Cũng lưu ý rằng toàn bộ đầu ra nằm trong một dòng đơn dài, đẹp, không phải là một đoạn cao của các dòng được xắt nhỏ. Điều này làm cho nó dễ đọc hơn trên các câu hỏi SO và cũng dễ sao chép + dán hơn.
Cập nhật tháng 10 năm 2013:
Bây giờ bạn có thể chỉ định có bao nhiêu dòng đầu ra văn bản sẽ chiếm (nghĩa là những gì bạn sẽ dán vào StackOverflow). Sử dụng lines.out=n
đối số cho điều này. Thí dụ:
reproduce(DF, cols=c(1:3, 17, 23), lines.out=7)
sản lượng:
==X==============================================================X==
Copy+Paste this part. (If on a Mac, it is already copied!)
==X==============================================================X==
DF <- structure(list(id = structure(c(1L, 1L, 1L, 1L, 2L, 2L, 2L, 25L,25L, 25L), .Label
= c("A", "B", "C", "D", "E", "F", "G", "H","I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U","V", "W", "X", "Y"), class = "factor"),
X1 = c(809L, 81L, 862L,747L, 224L, 721L, 310L, 53L, 853L, 642L),
X2 = c(926L, 409L,825L, 702L, 803L, 63L, 319L, 941L, 598L, 830L),
X16 = c(447L,164L, 8L, 775L, 471L, 196L, 30L, 420L, 47L, 327L),
X22 = c(335L,164L, 503L, 407L, 662L, 139L, 111L, 721L, 340L, 178L)), .Names = c("id","X1",
"X2", "X16", "X22"), class = "data.frame", row.names = c(1L,2L, 3L, 4L, 5L, 6L, 7L, 98L, 99L, 100L))
==X==============================================================X==