You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
74 lines
2.6 KiB
74 lines
2.6 KiB
clean_int <- function(x) {
|
|
suppressWarnings(as.integer(gsub(",", "", x)))
|
|
}
|
|
|
|
clean_num <- function(x) {
|
|
suppressWarnings(as.numeric(gsub(",", "", x)))
|
|
}
|
|
|
|
set_names <- function(object = nm, nm) { names(object) <- nm ; object }
|
|
|
|
as_tibble <- function(x) {
|
|
class(x) <- c("tbl_df", "tbl", "data.frame")
|
|
x
|
|
}
|
|
|
|
tibble <- function(...) {
|
|
as_tibble(data.frame(..., stringsAsFactors = FALSE))
|
|
}
|
|
|
|
# Tests whether a raw httr response or character vector has a byte order mark (BOM)
|
|
has_bom <- function(resp, encoding="UTF-8") {
|
|
if (inherits(resp, "response")) {
|
|
F <- resp$content[1:4]
|
|
switch(encoding,
|
|
`UTF-8`=F[1]==as.raw(0xef) & F[2]==as.raw(0xbb) & F[3]==as.raw(0xbf),
|
|
`UTF-16`=F[1]==as.raw(0xff) & F[2]==as.raw(0xfe),
|
|
`UTF-16BE`=F[1]==as.raw(0xfe) & F[2]==as.raw(0xff),
|
|
{ message("Unsupported encoding") ; return(NA) }
|
|
)
|
|
} else if (inherits(resp, "character")) {
|
|
switch(encoding,
|
|
`UTF-8`=grepl("^", resp[1]),
|
|
`UTF-16`=grepl("^ÿþ", resp[1]),
|
|
`UTF-16BE`=grepl("^þÿ", resp[1]),
|
|
{ message("Unsupported encoding") ; return(NA) }
|
|
)
|
|
} else {
|
|
message("Expected either an httr::response object or a character")
|
|
return(NA)
|
|
}
|
|
}
|
|
|
|
# Remove byte order mark (BOM) from \code{httr::response} object or character vector
|
|
sans_bom <- function(resp) {
|
|
|
|
if (inherits(resp, "response")) {
|
|
|
|
F <- resp$content[1:4]
|
|
if (F[1]==as.raw(0xef) & F[2]==as.raw(0xbb) & F[3]==as.raw(0xbf)) {
|
|
iconv(readBin(resp$content[4:length(resp$content)], character()), from="UTF-8", to="UTF-8")
|
|
} else if (F[1]==as.raw(0xff) & F[2]==as.raw(0xfe)) {
|
|
iconv(readBin(resp$content[3:length(resp$content)], character()), from="UTF-16", to="UTF-8")
|
|
} else if (F[1]==as.raw(0xfe) & F[2]==as.raw(0xff)) {
|
|
iconv(readBin(resp$content[3:length(resp$content)], character()), from="UTF-16BE", to="UTF-8")
|
|
} else {
|
|
stop("Did not detect a BOM in the httr::response object content.", call.=FALSE)
|
|
}
|
|
|
|
} else if (inherits(resp, "character")) {
|
|
|
|
if (grepl("^", resp[1])) {
|
|
iconv(readBin(sub("^", "", resp), character()), from="UTF-8", to="UTF-8")
|
|
} else if (grepl("^ÿþ", resp[1])) {
|
|
iconv(readBin(sub("^ÿþ", "", resp), character()), from="UTF-16", to="UTF-8")
|
|
} else if (grepl("^þÿ", resp[1])) {
|
|
iconv(readBin(sub("^þÿ", "", resp), character()), from="UTF-16BE", to="UTF-8")
|
|
} else {
|
|
stop("Did not detect a BOM in the content.", call.=FALSE)
|
|
}
|
|
|
|
} else {
|
|
stop("Expected either an httr::response object or a character", call.=FALSE)
|
|
}
|
|
}
|
|
|