Many thanks -- You are right; I had rnorm() and sample() mixed up in my code. I'll work on generating a normal ordinal sample next.
Cheers, Don On Mon, May 19, 2008 at 4:07 PM, Erik Iverson <[EMAIL PROTECTED]> wrote: > Hello - > > Donald Braman wrote: > >> # I'm new to R and am trying to get the hang of how it handles >> # dataframes & loops. If anyone can help me with some simple tasks, >> # I'd be much obliged. >> >> # First, i'd like to generate some random data in a dataframe >> # to efficiently illustrate what I'm up to. >> # let's say I have six variables as listed below (I really >> # have hundreds, but a few will illustrate the point). >> # I want to generate my dataframe (mdf) >> # with the 6 variables X 100 values with rnorm(7). >> # How do I do this? I tried many variations on the following: >> >> var_list <- c("HEQUAL", "EWEALTH", "ERADEQ", "HREVDIS1", "EDISCRIM", >> "HREVDIS2") >> for(i in 1:length(var_list)) {var_list[1] <- rnorm(100)} >> mdf <- data.frame(cbind(varlist[1:length(var_list)]) >> mdf >> >> There are many ways to do this. Do you mean that you want 6 columns, 100 > observations in each column, each a sample from a normal distribution with > mean = 7 and sd = 1? You can do this without looping in one of several > ways. If you are coming from a SAS environment (my guess since you talk of > looping over data.frames), you may be used to looping through a data object. > In R, you can usually avoid this since many functions are vectorized, or > take a 'whole object' approach. > > var_list <- c("HEQUAL", "EWEALTH", "ERADEQ", "HREVDIS1", "EDISCRIM", > "HREVDIS2") > > mdf <- data.frame(replicate(6, rnorm(100, 7))) ## generate random data > names(mdf) ## default names > names(mdf) <- var_list ## use our names > > >> # Then, I'd like to recode the variables that begin with the letter "H". >> # I've tried many variations of the following, but to no avail: >> >> reverse_list <- c("HEQUAL", "HREVDIS1", "HREVDIS2") >> reversed_list <- c("RHEQUAL", "RHREVDIS1", "RHREVDIS2") >> for(i in 1:length(reverse_list)) >> {mdf[ ,e_reversed_list][[i]] <- recode(mdf[ ,e_reverse_list][[i]], >> '5:99=NA; 1=4; 2=3; 3=2; 4=1; ', as.factor.result=FALSE) >> >> > I'm not quite sure what you are after here. What do you mean by recode? > What package is your 'recode' function located in? > > It appears that you may be under the impression that the data.frame > contains integers, but certainly it will not since it was generated with > rnorm? sample can generate a samples of the type you may be after, for > example, > > > sample(7, 100, replace = TRUE) > > Best, > Erik Iverson > -- Donald Braman http://www.law.gwu.edu/Faculty/profile.aspx?id=10123 http://research.yale.edu/culturalcognition http://ssrn.com/author=286206 [[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.