I got it! Thank you so much Jim! On 20 October 2011 15:06, jim holtman <jholt...@gmail.com> wrote:
> try this: You were redfining 'transition' within the loop > > x <- > > c('A','D','F','H','N','A','C','H','F','D','F','F','H','K','G','D','D','B','N','K','O','V','S','S','F','H','J','U','K','T','H','S','R','G','S','R','R','G','D','B','G','F','G','N','H','H','K','L','B','X','C','V','S','F','X','G','T','H','H','H','R','A','E','D','C') > y <- c(rep(0293,8), rep(0498,6), rep(6847,10), rep(6209,4), rep(8562,13), > rep(4596,6), rep(2857,2), rep(6178,3), rep(6018,5), rep(5629,4), > rep(7535,4)) > mydata <- as.data.frame(cbind(x,y)) > names(mydata) <- c('actions', 'agents') > mydata > > transition <- vector('list', length(unique(mydata$agents))) # > create a list to hold the outputs > > for (i in 1:length(unique(mydata$agents))){ # decompose the > data frame by agents > agent.i <- mydata[mydata$agents == (unique(mydata$agents))[i], ] > transit.i <- c() > for (j in 1:length(agent.i$actions)-1){ > transit.i[j] <- paste(agent.i$actions[j], > agent.i$actions[j+1], sep = '') > } > # for each subset of each agent, perform the 'pairing' > transition[[i]] <- transit.i > } > transition > > On Thu, Oct 20, 2011 at 8:52 AM, Sally Zhen <salil...@gmail.com> wrote: > > Hi all, > > > > > > I'd like to thank those who helped me with my previous loop function > > question with agents/events. I have solved the problem with the advice > from > > this community. > > > > I have now moved on to the next step, which requires me to find all the > > transition pair within an event. A sample data and the R commands I've > > written are as follow: > > > > x <- > > > c('A','D','F','H','N','A','C','H','F','D','F','F','H','K','G','D','D','B','N','K','O','V','S','S','F','H','J','U','K','T','H','S','R','G','S','R','R','G','D','B','G','F','G','N','H','H','K','L','B','X','C','V','S','F','X','G','T','H','H','H','R','A','E','D','C') > > y <- c(rep(0293,8), rep(0498,6), rep(6847,10), rep(6209,4), rep(8562,13), > > rep(4596,6), rep(2857,2), rep(6178,3), rep(6018,5), rep(5629,4), > > rep(7535,4)) > > mydata <- as.data.frame(cbind(x,y)) > > names(mydata) <- c('actions', 'agents') > > mydata > > > > > > for (i in 1:length(unique(mydata$agents))){ # decompose the data > > frame by agents > > agent.i <- mydata[mydata$agents == (unique(mydata$agents))[i], ] > > transition <- vector('list', length(unique(mydata$agents))) # > create > > a list to hold the outputs > > transit.i <- c() > > for (j in 1:length(agent.i$actions)-1){ > > transit.i[j] <- paste(agent.i$actions[j], agent.i$actions[j+1], sep = > '')} > > # for each subset of each agent, perform the 'pairing' > > transition[[i]] <- transit.i} > > transition > > > > > > The actions are ordered, so what I need to do is just to paste each > action > > to the next one to form a pair. > > My attempt only produced the desired result for the last agent: > > > > [[1]] > > NULL > > > > [[2]] > > NULL > > > > [[3]] > > NULL > > > > [[4]] > > NULL > > > > [[5]] > > NULL > > > > [[6]] > > NULL > > > > [[7]] > > NULL > > > > [[8]] > > NULL > > > > [[9]] > > NULL > > > > [[10]] > > NULL > > > > [[11]] > > [1] "AE" "ED" "DC" > > > > > > Is there any way to avoid using 2-level loop function, although to me > it's > > the most intuitive method? Any pointer would be greatly appreciated! > > > > Regards, > > Sally > > > > [[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. > > > > > > -- > Jim Holtman > Data Munger Guru > > What is the problem that you are trying to solve? > [[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.