Hi Thank you David. It was the conflict with data table that was causing the error. Obviously I was clueless (still).
Just to check out the functionality of dput, I did the following: 1. commented out the data line in the github example. 2. attached the file to an email to myself. 3. used RStudio to open the attachment and ran the code(with data creation line commented out). The data was present. NICE, VERY NICE INDEED. Merry Christmas and Happy Holidays to all. Carl Sutton ps: David Winsemius is now my very best Santa Claus. > On Friday, December 23, 2016 3:24 PM, David Winsemius > <dwinsem...@comcast.net> wrote: > > >> 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.