Re: [R] inconsistent output when using variable substitution

From: Dieter Menne <>
Date: Sat, 31 May 2008 10:05:43 +0000 (UTC)

Robert Felty <robfelty <at>> writes:

> I am extremely puzzled by this behavior in R. I have a data frame called
> Trials in which I have results from an experiment. I am trying to do a
> subjects analysis, but getting weird results. Each row has 1 trial in it,
> which includes a column for the subject number I get the list of subject
> numbers like so:
> > Subj=unique(sort(Trials$Subj))

> Then I loop over them. But I get strange results. As a test, I tried the
> following:
> > i=1
> > Subj[i]
> [1] 49
> > thisSubj = subset(Trials,Trials$Subj==Subj[i])
> > thisSubj$Ansr[1]
> [1] "abacus"
> > thisSubj = subset(Trials,Trials$Subj==49)
> > thisSubj$Ansr[1]
> [1] "able"
> I am expecting to get a result of "able" both times, since I know that Subj[i]
> is 49, when i=1. Clearly the two different "thisSubj=..." lines are not
> returning the same values, as I would expect them to.

Yes, this is "expected behavior", but nevertheless sonfusing and a source of some unexpected errors.

The sorting leads to a re-arrangement of the levels, so that Subj is a different beast after the sorting.

Please, do post complete, self-running examples next time that can be pasted into RGui. It needs 2 minutes to find the problem in the example below, and 10 minutes to resolve the "what did he think" and remove the >


Trials = data.frame(Subj=c(7,5,5,3,3,7),
                    Ansr = letters[1:6])
Trials$Subj = as.factor(Trials$Subj)
Subj = unique(Trials$Subj)

# Factor w/ 3 levels "3","5","7": 3 2 1
subset(Trials, Trials$Subj==Subj[1])

Subj = sort(unique(Trials$Subj))
# Factor w/ 3 levels "3","5","7": 1 2 3
subset(Trials, Trials$Subj==Subj[1]) mailing list PLEASE do read the posting guide and provide commented, minimal, self-contained, reproducible code. Received on Mon 02 Jun 2008 - 04:06:59 GMT

Archive maintained by Robert King, hosted by the discipline of statistics at the University of Newcastle, Australia.
Archive generated by hypermail 2.2.0, at Mon 02 Jun 2008 - 04:30:37 GMT.

Mailing list information is available at Please read the posting guide before posting to the list.

list of date sections of archive