I have following data.table for which I cannot use output of dput command to recreate it:
> ddt
Unit Anything index new
1: A 3.4 1 1
2:
If you've already dput the file and you don't feel much like manually editing before dget, you can use the following
data.table.parse<-function (file = "", n = NULL, text = NULL, prompt = "?", keep.source = getOption("keep.source"),
srcfile = NULL, encoding = "unknown")
{
keep.source <- isTRUE(keep.source)
if (!is.null(text)) {
if (length(text) == 0L)
return(expression())
if (missing(srcfile)) {
srcfile <- ""
if (keep.source)
srcfile <- srcfilecopy(srcfile, text)
}
file <- stdin()
}
else {
if (is.character(file)) {
if (file == "") {
file <- stdin()
if (missing(srcfile))
srcfile <- ""
}
else {
filename <- file
file <- file(filename, "r")
if (missing(srcfile))
srcfile <- filename
if (keep.source) {
text <- readLines(file, warn = FALSE)
if (!length(text))
text <- ""
close(file)
file <- stdin()
srcfile <- srcfilecopy(filename, text, file.mtime(filename),
isFile = TRUE)
}
else {
text <- readLines(file, warn = FALSE)
if (!length(text)) {
text <- ""
} else {
text <- gsub("(, .internal.selfref = )","",text,perl=TRUE)
}
on.exit(close(file))
}
}
}
}
# text <- gsub("(, .internal.selfref = )","",text)
.Internal(parse(file, n, text, prompt, srcfile, encoding))
}
data.table.get <- function(file, keep.source = FALSE)
eval(data.table.parse(file = file, keep.source = keep.source))
dtget <- data.table.get
then change your calls of dget to dtget. Note that due to the inline parsing, this will make dtget slower than dget, so use it only in circumstances where you could be retrieving an object of type data.table.