On Oct 19, 2012, at 2:26 PM, Michael Grant wrote: > New installation seems to have behavior I cannot figure out. Here is > illustrative sequence where I load a small data set (test) from Crawley's > files and try to run a simple linear model and get an error message. Oddly, > R reports that the variable 'test$ozone' is numeric while, after attaching > test, the variable ozone is not numeric. Can someone please help? This > behavior is occurring with multiple data sets loaded from outside R. Thank > you in advance. > Michael Grant > > > Example: >> test > ozone garden > 1 3 A > 2 5 B > 3 4 A > 4 5 B > 5 4 A > 6 6 B > 7 3 A > 8 7 B > 9 2 A > 10 4 B > 11 3 A > 12 4 B > 13 1 A > 14 3 B > 15 3 A > 16 5 B > 17 5 A > 18 6 B > 19 2 A > 20 5 B >> is.data.frame(test) > [1] TRUE >> is.numeric(test$ozone) > [1] TRUE >> is.factor(test$garden) > [1] TRUE >> lm(ozone~garden) > Error in model.frame.default(formula = ozone ~ garden, drop.unused.levels = > TRUE) : > invalid type (list) for variable 'ozone'
This is not surprising for two reasons. Crawley's presumptuously named text "The R Book" teaches students to use `attach`, leaving them unprepared to deal with the rather predictable confusion that unfortunate practice leads to. (The second reason is that you have not yet used `attach`.) > >> attach(test) >> is.numeric(ozone) And when I do that, I do not get the same result: test <- read.table(text=" ozone garden 1 3 A 2 5 B 3 4 A 4 5 B 5 4 A 6 6 B 7 3 A 8 7 B 9 2 A 10 4 B 11 3 A 12 4 B 13 1 A 14 3 B 15 3 A 16 5 B 17 5 A 18 6 B 19 2 A 20 5 B", header=TRUE) is.data.frame(test) #[1] TRUE is.numeric(test$ozone) #[1] TRUE is.factor(test$garden) #[1] TRUE lm(ozone~garden) # Error which seems perfectly expected without a 'data' argument. attach(test) is.numeric(ozone) ####------- # I get > is.numeric(ozone) [1] TRUE So you have done something else. What it is we cannot tell. Why not send a letter to Crawley? He's the one you paid money for that fat book, and whose dataset you are importing in some unspecified manner. Or perhaps use: str(test) > [1] FALSE >> is.numeric(test$ozone) > [1] TRUE > > [[alternative HTML version deleted]] > -- David Winsemius, MD Alameda, CA, USA > sessionInfo() R version 2.15.1 (2012-06-22) Platform: x86_64-apple-darwin9.8.0/x86_64 (64-bit) ______________________________________________ [email protected] 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.

