# [R] Beginner Loop Question with dynamic variable names

Mon Sep 25 15:33:40 CEST 2006

```I think this does what you are looking for:

dta <- data.frame(q1_1=rep(1,5),q1_2=rep(2,5),q2_1=rep(3,5),q2_2=rep(4,5))

for (i in 1:2) {
e1  <- paste("q",i,"_1 + q",i,"_2 * 2",sep="")
assign(paste("q",i,sep=""),with(dta,eval(parse(text=e1))))
}

On 25/09/06, Peter Wolkerstorfer - CURE <wolkerstorfer at cure.at> wrote:
> Dear all,
>
> I have another small scripting-beginner problem which you hopefully can
> help:
>
> I compute new variables with:
>
> # Question 1
> results\$q1 <- with(results, q1_1*1+ q1_2*2+ q1_3*3+ q1_4*4+ q1_5*5)
> # Question 2
> results\$q2 <- with(results, q2_1*1+ q2_2*2+ q2_3*3+ q2_4*4+ q2_5*5)
> # Question 3
> results\$q3 <- with(results, q3_1*1+ q3_2*2+ q3_3*3+ q3_4*4+ q3_5*5)
> # Question 4
> results\$q4 <- with(results, q4_1*1+ q4_2*2+ q4_3*3+ q4_4*4+ q4_5*5)
>
> This is very inefficient so I would like to do this in a loop like:
>
> for (i in 1:20) {results\$q1 <- with(results, q1_1*1+ q1_2*2+ q1_3*3+
> q1_4*4+ q1_5*5)}
>
> My question now:
> How to replace the "1"-s (results\$q1, q1_1...) in the variables with the
> looping variable?
>
> Here like I like it (just for illustration - of course I still miss the
> function to tell R that it should append the value of i to the variable
> name):
>
> # i is the number of questions - just an illustration, I know it does
> not work this way
> for (i in 1:20) {results\$qi <- with(results, qi_1*1+ qi_2*2+ qi_3*3+
> qi_4*4+ qi_5*5)}
>
> Help would be greatly appreciated. Thanks in advance.
>
> Peter
>
>
> ___CURE - Center for Usability Research & Engineering___
>
> Peter Wolkerstorfer
> Usability Engineer
> Hauffgasse 3-5, 1110 Wien, Austria
>
> [Tel]  +43.1.743 54 51.46
> [Fax]  +43.1.743 54 51.30
>
> [Mail] wolkerstorfer at cure.at
> [Web]  http://www.cure.at
>
> ______________________________________________
> R-help at stat.math.ethz.ch mailing list
> https://stat.ethz.ch/mailman/listinfo/r-help
> and provide commented, minimal, self-contained, reproducible code.
>

--
=================================
David Barron