Um, if you insist on doing it that way, at least use assign(varname, as.vector(get(varname)))
-pd > On 4 Dec 2017, at 22:46 , Love Bohman <love.boh...@sociology.su.se> wrote: > > Hi! > Thanks for the replies! > I understand people more accustomed to R doesn't like looping much, and that > thinking about loops is something I do since I worked with Stata a lot. The > syntax from Peter Dalgaard was really clever, and I learned a lot from it, > even though it didn't solve my problem (I guess it wasn't very well > explained). My problem was basically that I have a data matrix consisting of > just 1 row, and I want to convert that row into a vector. However, when > trying to do that dynamically, I couldn't get R to read the right hand side > of the syntax as a variable name instead of a string. However, together with > a colleague I finally solved it with the (eval(as.name()) function (I include > the loop I used below). I understand that looping isn't kosher among you more > devoted R-users, and eventually I hope I will learn to use lists in the > future instead. > > Thanks! > Love > > > for (year in 2000:2007){ > varname <- paste0("aa_",year) > assign(paste0(varname), as.vector(eval(as.name(varname)))) > } > > -----Ursprungligt meddelande----- > Från: peter dalgaard [mailto:pda...@gmail.com] > Skickat: den 4 december 2017 16:39 > Till: Love Bohman <love.boh...@sociology.su.se> > Kopia: r-help@r-project.org > Ämne: Re: [R] Dynamic reference, right-hand side of function > > The generic rule is that R is not a macro language, so looping of names of > things gets awkward. It is usually easier to use compound objects like lists > and iterate over them. E.g. > > datanames <- paste0("aa_", 2000:2007) > datalist <- lapply(datanames, get) > names(datalist) <- datanames > col1 <- lapply(datalist, "[[", 1) > colnum <- lapply(col1, as.numeric) > > (The 2nd line assumes that the damage has already been done so that you have > aa_2000 ... aa_2007 in your workspace. You might alternatively create the > list directly while importing the data.) > > -pd > >> On 4 Dec 2017, at 12:33 , Love Bohman <love.boh...@sociology.su.se> wrote: >> >> Hi R-users! >> Being new to R, and a fairly advanced Stata-user, I guess part of my problem >> is that my mindset (and probably my language as well) is wrong. Anyway, I >> have what I guess is a rather simple problem, that I now without success >> spent days trying to solve. >> >> I have a bunch of datasets imported from Stata that is labelled aa_2000 >> aa_2001 aa_2002, etc. Each dataset is imported as a matrix, and consists of >> one column only. The columns consists of integer numbers. I need to convert >> the data to vectors, which I found several ways to do. I use, for example: >> aa_2000 <- as.numeric(aa_2000[,1]) >> However, when trying to automate the task, so I don't have to write a line >> of code for each dataset, I get stuck. Since I'm a Stata user, my first >> attempt is trying to make a loop in order to loop over all datasets. >> However, I manage to write a loop that works for the left-hand side of the >> syntax, but not for the right-hand side. >> I have included some examples from my struggles to solve the issue below, >> what they all have in common is that I don't manage to call for any "macro" >> (is that only a Stata-word?) in the right hand side of the functions. When I >> try to replace the static reference with a dynamic one (like in the >> left-hand side), the syntax just doesn't work. >> >> I would very much appreciate some help with this issue! >> All the best, >> Love >> >> year <- 2002 >> dataname <- paste0("aa_",year) >> assign(paste0(dataname), as.numeric(aa_2002[,1])) >> >> year <- 2003 >> assign(paste0("aa_",year), as.numeric(aa_2003)) >> >> year <- 2005 >> assign(paste0("aa_",year), aa_2005[,1]) >> >> list1 <- c(2000:2007) >> list1[c(7)] >> assign(paste0("aa_",list1[c(7)]), as.numeric(paste0(aa_2006))) >> >> >> [[alternative HTML version deleted]] >> >> ______________________________________________ >> 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. > > -- > Peter Dalgaard, Professor, > Center for Statistics, Copenhagen Business School Solbjerg Plads 3, 2000 > Frederiksberg, Denmark > Phone: (+45)38153501 > Office: A 4.23 > Email: pd....@cbs.dk Priv: pda...@gmail.com > > > > > > > > > -- Peter Dalgaard, Professor, Center for Statistics, Copenhagen Business School Solbjerg Plads 3, 2000 Frederiksberg, Denmark Phone: (+45)38153501 Office: A 4.23 Email: pd....@cbs.dk Priv: pda...@gmail.com ______________________________________________ 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.