Joshua's explanation of rownames makes a lot more sense than my speculation about conversion to numeric. Rownames of dataframes is an area in which there have definitely been changes in R in the last year or two, give or take. (I don't recall details or timing)

Therefore, I find it very plausible that in R 2.8.x the rownames of your dataframe were different than they are now in R 2.10.x, given how you constructed the dataframe. This then would be the explanation of why the script worked in 2.8.x and not in 2.10.x.

-Don

At 8:57 PM -0700 3/16/10, Joshua Wiley wrote:
Michael,

I have to agree with Don that using a factor as a loop index seems
like a risky choice.  At any rate, part of the problem is that you are
referencing a nonexistant part of your dataframe.  i is an index of
characters, but your rownames are 1:5, not LETTERS[1:5].  If you give
your dataframe rownames, you can then use your loop, see below.

########################
locn<-c("A", "B", "C", "D", "E")
n<-c(28, 14, 21, 52, 35)
corr.r<-c(0.40, 0.63, 0.38, 0.44, 0.35)

lab8.dat<-data.frame(locn, n, corr.r)
lab8.dat

calc.prob.t<-function(n, r)
   {
   df<-n-2
   t<-(r-0)/(sqrt((1-r^2)/df)) # I'm assuming you mean r^2 here not r2
       probt<-2*(pt(t, df, lower.tail=FALSE))
   probt
   }

p_unadj<-NULL # since you assign it to null anyways, there's not real
point in the other assignment
p_unadj

for ( i in lab8.dat[,1] )
       p_unadj[i] <- calc.prob.t(lab8.dat[i,2], lab8.dat[i,3])

p_unadj # all NAs as you noticed

rownames(lab8.dat) <- lab8.dat$locn

for ( i in lab8.dat[,1] )
       p_unadj[i] <- calc.prob.t(lab8.dat[i,2], lab8.dat[i,3])

p_unadj # now lab8.dat["A",2] etc. means something, and it works

##############################




On Tue, Mar 16, 2010 at 7:53 PM, Michael Rennie <mdren...@gmail.com> wrote:

 Hi gang,

 I'm perplexed- I have some code that uses for() loops that works fine in R
 version 2.8 on my mac, worked fine in version 2.8 on my old windows machine,
 but doesn't work in version 2.10 on windows.

 The loop implements a function over a data frame (code is included below).

 In Mac (running version 2.8), the results of the loop are what I expect:

 p_unadj
 [1] 0.034939481 0.015743706 0.089287030 0.001098538 0.039290594

 But in Windows (running version 2.10.1), I get a bunch of NA's...

 p_unadj
  A   B      C    D    E
 NA NA NA NA NA

 If I had to guess, I'd say that R v. 2.10 is handling the i in lab8.dat[,1]
 differently, given that it's keeping the row names in the output for
 p_unadj... but why would that stop it from applying the function?

 Any thoughts or suggestions are welcome.

 Cheers,

 Mike

 Here's the code...


 #build the dataset

 locn<-c("A", "B", "C", "D", "E")
 n<-c(28, 14, 21, 52, 35)
 corr.r<-c(0.40, 0.63, 0.38, 0.44, 0.35)

 lab8.dat<-data.frame(locn, n, corr.r)
 lab8.dat

 attach(lab8.dat)

 #write the function

 calc.prob.t<-function(n, r)
 #given a sample size (n) and correlation coefficient (r), returns the
 probability for that test
    {
    df<-n-2
    t<-(r-0)/(sqrt((1-r2)/df))
        probt<-2*(pt(t, df, lower.tail=FALSE))
    probt
    }

 #try out the function...
 calc.prob.t(lab8.dat$n[1], lab8.dat$corr.r[1])
 #it works.

 #write a loop to implement that function for every correlation in your
 dataset...


 p_unadj<-numeric(length(lab8.dat[,1]))
 p_unadj<-NULL
 p_unadj

 #all this just built an empty vector to store the results of our loop...

 for ( i in lab8.dat[,1] )
        p_unadj[i]<-calc.prob.t(lab8.dat[i,2], lab8.dat[i,3])

 p_unadj

 #if executed on my Mac, running R v.2.8, this works (and did using 2.8 on my
 old windows machine). Running v. 2.10 in Windows, I get NAs.

 --
 Michael D. Rennie, Ph.D.
 Postdoctoral Fellow, Environmental and Life Sciences Program
 Trent University
 > 2140 East Bank Drive, DNA Building (2nd Floor)
 Peterborough, Ontario K9J 7B8
 Vox:705.755.2287 Fax:705.755.1559
 www.*people.trentu.ca/michaelrennie

 ______________________________________________
 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.




--
Joshua Wiley
Senior in Psychology
University of California, Riverside
http://*www.*joshuawiley.com/

______________________________________________
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.


--
---------------------------------
Don MacQueen
Lawrence Livermore National Laboratory
Livermore, CA, USA
925-423-1062
m...@llnl.gov

______________________________________________
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.

Reply via email to