[Rd] reverse object creation

Thierry Onkelinx thierry.onkelinx at inbo.be
Fri Oct 9 12:54:52 CEST 2015


Dear Bo,

Please keep the mailing list in cc.

Your function only works properly with a data.frame in which all variables
are characters. dput() will preserve the structure of the object and works
with all R objects.

Best regards,

ir. Thierry Onkelinx
Instituut voor natuur- en bosonderzoek / Research Institute for Nature and
Forest
team Biometrie & Kwaliteitszorg / team Biometrics & Quality Assurance
Kliniekstraat 25
1070 Anderlecht
Belgium

To call in the statistician after the experiment is done may be no more
than asking him to perform a post-mortem examination: he may be able to say
what the experiment died of. ~ Sir Ronald Aylmer Fisher
The plural of anecdote is not data. ~ Roger Brinner
The combination of some data and an aching desire for an answer does not
ensure that a reasonable answer can be extracted from a given body of data.
~ John Tukey

2015-10-09 12:32 GMT+02:00 Bo Werth <bo.werth at gmail.com>:

> Dear Thierry,
>
> many thanks for the hint - indeed, I wasn't aware of dput() - it is doing
> something close to what I was looking for -
> the only issue with the result for data frames is that it becomes
> difficult to see the row association:
>
> dput returns
>
> structure(list(sheet = c("output cup", "output coppy", "gross value added
> cup",
> "gross value added coppy", "GFCF cup", "GFCF vol", "empl jobs",
> "empl FTE", "employees jobs", "employees FTE", "D1", "D11", "D29-D39",
> "D29 nom", "D39 nom", "P51c nom", "B2n+B3n", "total hours worked",
> "hours worked employees"), var = c("PROD", "PKPY", "VALU", "VKPY",
> "GFCF", "GKPY", "EMPN", "FTEN", "EMPE", "FTEE", "LABR", "WAGE",
> "OTXS", "D29 nom", "D39 nom", "CFCC", "NOPS", "HRNS", "HRSE")), .Names =
> c("sheet",
> "var"), row.names = c(NA, -19L), class = "data.frame")
> >
>
> df_rev returns
>
> rbind.data.frame(c("output cup", "PROD"),
> c("output coppy", "PKPY"),
> c("gross value added cup", "VALU"),
> c("gross value added coppy", "VKPY"),
> c("GFCF cup", "GFCF"),
> c("GFCF vol", "GKPY"),
> c("empl jobs", "EMPN"),
> c("empl FTE", "FTEN"),
> c("employees jobs", "EMPE"),
> c("employees FTE", "FTEE"),
> c("D1", "LABR"),
> c("D11", "WAGE"),
> c("D29-D39", "OTXS"),
> c("D29 nom", "D29 nom"),
> c("D39 nom", "D39 nom"),
> c("P51c nom", "CFCC"),
> c("B2n+B3n", "NOPS"),
> c("total hours worked", "HRNS"),
> c("hours worked employees", "HRSE"))
>
> Thanks again,
> best,
> Bo
>
> On Fri, Oct 9, 2015 at 12:22 PM, Thierry Onkelinx <
> thierry.onkelinx at inbo.be> wrote:
>
>> Dear Bo,
>>
>> I think that you are looking for dput()
>>
>> Best regards,
>>
>> ir. Thierry Onkelinx
>> Instituut voor natuur- en bosonderzoek / Research Institute for Nature
>> and Forest
>> team Biometrie & Kwaliteitszorg / team Biometrics & Quality Assurance
>> Kliniekstraat 25
>> 1070 Anderlecht
>> Belgium
>>
>> To call in the statistician after the experiment is done may be no more
>> than asking him to perform a post-mortem examination: he may be able to say
>> what the experiment died of. ~ Sir Ronald Aylmer Fisher
>> The plural of anecdote is not data. ~ Roger Brinner
>> The combination of some data and an aching desire for an answer does not
>> ensure that a reasonable answer can be extracted from a given body of data.
>> ~ John Tukey
>>
>> 2015-10-09 11:55 GMT+02:00 Bo Werth <bo.werth at gmail.com>:
>>
>>> Dear all,
>>>
>>> this is my first message to this mailing list - please advise if it is
>>> not
>>> the right place for the subject
>>>
>>> I've been using R very intensively the last 3-4 years and one of the most
>>> tedious tasks is modification of lookup or conversion tables
>>>
>>> So far, I have not found functions that create the commands for creating
>>> objects (vectors, data frames) based on the objects themselves - i.e. to
>>> reverse-engineer them.
>>>
>>> Here are my suggestions:
>>>
>>> c_rev <- function(x) cat(paste0('c("', gsub(', ', '", "', toString(x)),
>>> '")\n'))
>>>
>>> df_rev <- function(x) {
>>>     X <- apply(x, 1,
>>>                function(x) {
>>>                    paste0('c(',
>>>                           paste0(shQuote(x), collapse = ", "),
>>>                           ')'
>>>                           )
>>>                }
>>>                )
>>>     command <- paste0(
>>>         'rbind.data.frame(',
>>>         paste0(
>>>             X,
>>>             collapse = ",\n"),
>>>         ')')
>>>     return(cat(command, "\n"))
>>> }
>>>
>>> Bo
>>>
>>> ---
>>> bowerth.github.io
>>>
>>>         [[alternative HTML version deleted]]
>>>
>>> ______________________________________________
>>> R-devel at r-project.org mailing list
>>> https://stat.ethz.ch/mailman/listinfo/r-devel
>>>
>>
>>
>

	[[alternative HTML version deleted]]



More information about the R-devel mailing list