> On Dec 23, 2016, at 12:45 PM, Carl Sutton via R-help <r-help@r-project.org> 
> wrote:
> 
> Merry Christmas and Happy Holidays
> 
> I am attempting to use dput and or dget to send data along with a help 
> request to another list (package specific).   Read the help pages for both 
> and they appeared to be fairly simple functions.  Found an example on github 
> and it appeared to be an easy task to replicate.   Alas, a copy and paste of 
> the github example worked but my toy data example did not.
> 
> #  dput and dget functions
> #  Example from github
> set.seed(1337)
> NN <- 10
> theData <- data.frame(Alpha = rnorm(NN),
>                      Beta = rnorm(NN))
> theData$Gamma <- theData$Alpha * 2 + theData$Beta / 2 + rnorm(NN)
> dput(theData, "temporary_file")
> theDataReconstitutedAgain <- dget("temporary_file")
> print(theDataReconstitutedAgain)
> 
> 
> #  try it with my "toy data"library(data.table)

This is a guess based on what I know about data.table-objects and how they are 
represented with dput. You will see an .internal.selfref = <pointer: 
0x7f7fd18f2778>

But if you try to assign the value of the dput output to an R name, it's going 
to fail. You need to remove the .internal.selfref = <pointer: 0x7f7fd18f2778> 
and then assign as a data frame and run setDT() on the name.


> library(tidyr)
> #  data table for melt and columns split
> dt1 <- data.table(a_1 = 1:10, b_2 = 20:29,folks = c("art","brian","ed",
> "rich","dennis","frank", "derrick","paul","fred","numnuts"),
> a_2 = 2:11, b_1 = 21:30)
> melted <- melt(dt1, id = "folks")[,c("varType","varIndex") :=
>                                 tstrsplit(variable,"_")][,variable:=NULL]

Run this:

dput(melted)


> #  melted has 40 observations from stacking a and b variables
> #  which have lengths of 20 each
> #  here cometh the frustrtion
> dput(melted,"temp_file.txt")
> goGetIt <- dget("temp_file.txt", keep.source = FALSE)
> print(goGetIt)
> 
> 
>> goGetIt <- dget("temp_file.txt", keep.source = FALSE)
> Error in parse(file = file, keep.source = keep.source) : 
> temp_file.txt:18:36: unexpected '<'

That's because the regular R parser doesn't recognize the pointer as valid R 
code. It was not designed to recognize data.tables. the tidyr functions are 
designed to return data.frames, but `dget` is not from a package that is 
"data.table-aware"


> 17: "varIndex"), row.names = c(NA, -40L), class = c("data.table", 
> 18: "data.frame"), .internal.selfref = <
> ^
>> print(goGetIt)
> Error in print(goGetIt) : object 'goGetIt' not found
>> 

Try this instead:

 dput(as.data.frame(melted),"temp_file.txt")
 goGetIt <- dget("temp_file.txt", keep.source = FALSE)
 setDT(goGetIt)
 print(goGetIt)

-- 
David.
> the help page states dput just writes an ASCII text representation of an R 
> object to a file or connection, or uses one to recreate the object.  Nothing 
> there about not allowing a data frame or data table and the github example 
> was a data frame.   The line numbers referenced do not appear to refer to my 
> code (but maybe they do and I am ignorant of the meaning) and the code works 
> up to the dget line.
> 
> Typing dget in the console to see the inner workings of the function was not 
> helpful.
> 
> Also, I am unclear as to just how dput and dget work.  If I save a subset of 
> actual data to an object, then do dput on that object, can I rely that 
> whomever I send my code to (which includes the dput statement) be able to 
> retrieve the data?  In other words, dput saves the data in the code file?
> 
> Thanks for your help and may the holidays be wonderful for you and your loved 
> one.
> Carl Sutton
> 
> ______________________________________________
> R-help@r-project.org mailing list -- To UNSUBSCRIBE and more, see
> https://stat.ethz.ch/mailman/listinfo/r-help
> PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
> and provide commented, minimal, self-contained, reproducible code.

______________________________________________
R-help@r-project.org mailing list -- To UNSUBSCRIBE and more, see
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
and provide commented, minimal, self-contained, reproducible code.

Reply via email to