[R] Programming/scripting with "expressions - variables"
Frank E Harrell Jr
f.harrell at vanderbilt.edu
Mon Feb 7 19:49:00 CET 2005
Gorjanc Gregor wrote:
> Hello to Rusers!
>
> I am puzzled with R and I really do not know where to look
> in for my problem. I am moving from SAS and I have difficulties
> in translating SAS to R world. I hope I will get some hints
> or pointers so I can study from there on.
>
> I would like to do something like this. In SAS I can write
> a macro as example bellow, which is afcourse a silly one but
> shows what I don't know how to do in R.
>
> %macro test(data, colname, colvalue);
> data &data;
> ...
> &colname="&colvalue";
> other_&colname="other_&colvalue";
> run;
> %mend;
>
> And if I run it with this call:
> %test(Gregor, Gorjanc, 25);
>
> I get a table with name 'Gregor' and columns 'Gorjanc',
> and 'other_Gorjanc' with values:
>
> Gorjanc other_Gorjanc
> "25" "other_25"
>
> So can one show me the way to do the same thing in R?
>
> Thanks!
>
> --
> Lep pozdrav / With regards,
> Gregor GORJANC
>
Greetings, Gregor, from a fan of Slovenia.
Here is a start. Multiple variables are often put together in data
frames. Your example did not include an input dataset name. I took
data to be an input data frame, and added two new variables. I assume
that colvalue and colname are character values. If colvalue has length
one it will be duplicated for each row of data.
test <- function(data, colname, colvalue) {
data[[colname]] <- colvalue
data[[paste('other',colname,sep='_')]] <- paste('other',colvalue,sep='_')
data
}
Example usage:
data <- data.frame(x=1:5, y=11:15)
data2 <- test(data, 'a', 'b')
data <- test(data, 'a', 'b') # over-write
test(data, 'a', 'b') # create data but don't store
with(test(data, ....),{...}) # reference variables in temporary
dataset
If we know what your ultimate goal is, there may be a much better
approach than the test function. In many cases, you do not need to
create new variables at all.
Franc
--
Frank E Harrell Jr Professor and Chair School of Medicine
Department of Biostatistics Vanderbilt University
More information about the R-help
mailing list