|
24 | 24 | #' (read_write_option()) |
25 | 25 | #' # To add a new type: |
26 | 26 | #' tail(read_write_option(data.frame(type = "png", read_fun = "png::readPNG", |
27 | | -#' read_header = NA, write_fun = "png::writePNG"))) |
| 27 | +#' read_header = NA, write_fun = "png::writePNG", comment = "PNG image"))) |
28 | 28 | read_write_option <- function(new_type) { |
29 | 29 | opts <- getOption("read_write", default = tibble::tribble( |
30 | 30 | ~type, ~read_fun, ~read_header, |
31 | | - ~write_fun, |
| 31 | + ~write_fun, ~comment, |
32 | 32 | "csv", "readr::read_csv", "data.io::hread_text", |
33 | | - "readr::write_csv", |
| 33 | + "readr::write_csv", "comma separated values", |
34 | 34 | "csv2", "readr::read_csv2", "data.io::hread_text", |
35 | | - NA, |
| 35 | + NA, "semicolon separated values", |
36 | 36 | "xlcsv", "readr::read_csv", "data.io::hread_text", |
37 | | - "readr::write_excel_csv", |
| 37 | + "readr::write_excel_csv", "write a CSV file more easily readable by Excel", |
38 | 38 | "tsv", "readr::read_tsv", "data.io::hread_text", |
39 | | - "readr::write_tsv", |
| 39 | + "readr::write_tsv", "tab separated values", |
40 | 40 | "fwf", "readr::read_fwf", "data.io::hread_text", |
41 | | - NA, # TODO: a writer here! |
| 41 | + NA, "fixed width file", # TODO: a writer here! |
42 | 42 | "log", "readr::read_log", NA, |
43 | | - NA, # TODO: a writer here! |
| 43 | + NA, "standard log file", # TODO: a writer here! |
44 | 44 | "rds", "readr::read_rds", NA, |
45 | | - "readr::write_rds", |
| 45 | + "readr::write_rds", "R data file (no compression by default)", |
46 | 46 | "txt", "readr::read_file", NA, |
47 | | - "readr::write_file", |
| 47 | + "readr::write_file", "text file (as length 1 character vector)", |
48 | 48 | "raw", "readr::read_file_raw", NA, |
49 | | - NA, # TODO: a writer here! |
| 49 | + NA, "binary file (read as raw vector)", |
| 50 | + # TODO: a writer here! |
50 | 51 | "ssv", "readr::read_table", "data.io::hread_text", |
51 | | - NA,#Space separated values |
| 52 | + NA, "space separated values (strict)", |
52 | 53 | "ssv2", "readr::read_table2", "data.io::hread_text", |
53 | | - NA, |
| 54 | + NA, "space separated values (relaxed)", |
54 | 55 | "csv.gz", "readr::read_csv", "data.io::hread_text", |
55 | | - "readr::write_csv", |
| 56 | + "readr::write_csv", "gz compressed comma separated values", |
56 | 57 | "csv2.gz", "readr::read_csv2", "data.io::hread_text", |
57 | | - NA, |
| 58 | + NA, "gz compressed semicolon separated values", |
58 | 59 | "tsv.gz", "readr::read_tsv", "data.io::hread_text", |
59 | | - "readr::write_tsv", |
| 60 | + "readr::write_tsv", "gz compressed tab separated values", |
60 | 61 | "txt.gz", "readr::read_file", NA, |
61 | | - "readr::write_file", |
| 62 | + "readr::write_file", "gz compressed text file", |
62 | 63 | "csv.bz2", "readr::read_csv", "data.io::hread_text", |
63 | | - "readr::write_csv", |
| 64 | + "readr::write_csv", "bz2 compressed comma separated values", |
64 | 65 | "csv2.bz2","readr::read_csv2", "data.io::hread_text", |
65 | | - NA, |
| 66 | + NA, "bz2 compressed semicolon separated values", |
66 | 67 | "tsv.bz2", "readr::read_tsv", "data.io::hread_text", |
67 | | - "readr::write_tsv", |
| 68 | + "readr::write_tsv", "bz2 compressed tab separated values", |
68 | 69 | "txt.bz2", "readr::read_file", "data.io::hread_text", |
69 | | - "readr::write_file", |
| 70 | + "readr::write_file", "bz2 compressed text file", |
70 | 71 | "csv.xz", "readr::read_csv", "data.io::hread_text", |
71 | | - "readr::write_csv", |
| 72 | + "readr::write_csv", "xz compressed comma separated values", |
72 | 73 | "csv2.xz", "readr::read_csv2", "data.io::hread_text", |
73 | | - NA, |
| 74 | + NA, "xz compressed semicolon separated values", |
74 | 75 | "tsv.xz", "readr::read_tsv", "data.io::hread_text", |
75 | | - "readr::write_tsv", |
| 76 | + "readr::write_tsv", "xz compressed tab separated values", |
76 | 77 | "txt.xz", "readr::read_file", NA, |
77 | | - "readr::write_file", |
| 78 | + "readr::write_file", "xz compressed text file", |
78 | 79 | # Buggy right now!! "csvy", "csvy::read_csvy", NA, "csvy::write_csvy", |
| 80 | + # "comma separated value with YAML header", |
79 | 81 | "xls", "readxl::read_excel", "data.io::hread_xls", |
80 | | - "WriteXLS::WriteXLS", |
| 82 | + "WriteXLS::WriteXLS", "Excel old .xls format", |
81 | 83 | "xlsx", "readxl::read_excel", "data.io::hread_xlsx", |
82 | | - "openxlsx::write.xlsx", |
| 84 | + "writexl::write_xlsx", "Excel new .xlsx format", #"openxlsx::write.xlsx", |
83 | 85 | "dta", "haven::read_dta", NA, |
84 | | - "haven::write_dta", |
| 86 | + "haven::write_dta", "Stata DTA format", |
85 | 87 | # read_dta() = read_stata() |
86 | 88 | "sas", "haven::read_sas", NA, |
87 | | - "haven::write_sas", |
| 89 | + "haven::write_sas", "SAS format", |
88 | 90 | "sas7bdat","haven::read_sas", NA, |
89 | | - "haven::write_sas", |
| 91 | + "haven::write_sas", "SAS format (sas7bdat)", |
90 | 92 | "sav", "haven::read_sav", NA, |
91 | | - "haven::write_sav", |
| 93 | + "haven::write_sav", "SPSS .sav format", |
| 94 | + "zsav", "haven::read_sav", NA, |
| 95 | + "haven::write_sav", "SPSS .zsav format", |
92 | 96 | "por", "haven::read_por", NA, |
93 | | - NA, |
| 97 | + NA, "SPSS .por format", |
94 | 98 | # read_por()/read_sav() = read_spss() |
95 | 99 | "xpt", "haven::read_xpt", NA, |
96 | | - "haven::write_xpt" #, |
| 100 | + "haven::write_xpt", "SPSS transport format (FDA compliant)"#, |
97 | 101 | #"feather", "feather::read_feather",NA, |
98 | | - #"feather::write_feather" |
| 102 | + #"feather::write_feather", "transportable feather format" |
99 | 103 | )) |
100 | 104 |
|
101 | 105 | if (!missing(new_type)) { |
102 | 106 | # Check it is in a correct format |
103 | 107 | if (!is.data.frame(new_type)) |
104 | 108 | stop("new_type must be a data.frame") |
105 | | - if (ncol(new_type) != 4) |
106 | | - stop("new_type must contain 4 columns", |
107 | | - " (type, read_fun, read_header & write_fun") |
| 109 | + if (ncol(new_type) != 5) |
| 110 | + stop("new_type must contain 5 columns", |
| 111 | + " (type, read_fun, read_header, write_fun & comment") |
108 | 112 | names(new_type) <- names(opts) |
109 | 113 | opts <- rbind(opts, new_type) |
110 | 114 | } |
|
0 commit comments