Hi, Just to add: If the columns are not in the order (Mood1:Mood10) in the dataset. mood<- data.frame(Mood2=6:10,Mood1=1:5,Mood10=11:15,Mood3=16:20) do.call(cbind,lapply(names(mood),function(i) mood[i]*as.numeric(gsub("\\D+","",i))))
# Mood2 Mood1 Mood10 Mood3 #1 12 1 110 48 #2 14 2 120 51 #3 16 3 130 54 #4 18 4 140 57 #5 20 5 150 60 A.K. ----- Original Message ----- From: christel lacaze <christellac...@hotmail.co.uk> To: r-help@r-project.org Cc: Sent: Thursday, February 7, 2013 11:16 AM Subject: [R] help with creating new variables using a loop Hi there, I've got a set of 10 numeric variables called Mood1 to Mood10 in a dataset called mood. I'm trying to create a set of 10 new variables called m1 to m10 so that m1=Mood1*1, m2=Mood2*2, etc to m10=Mood10*10 Trawling through the internet, I eventually tried the following code: for (i in 1:10){ assign(x=paste0("mood$m",i), value=paste0("mood$Mood",i)*i, envir=.GlobalEnv) } unfortunately this doesn't work as it seems the paste0 function returns a list object that only contains the vector's name and not the vector itself. Hope someone can help... Christel [[alternative HTML version deleted]] ______________________________________________ R-help@r-project.org mailing list 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 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.