下面的会话让你在操作中对 R 环境的一些特性有个简单的了解。你对系统的许多特性开始时可能 有点不熟悉和困惑,但这些迷惑会很快 消失的。
$ RR 程序开始,并且有一段引导语。
(在 R 里面,左边的提示符将不会被显示防止
混淆。)
help.start()最小化帮助窗口,进入下一部分。
x <- rnorm(50)y <- rnorm(x)plot(x, y)ls()rm(x, y)x <- 1:20w <- 1 + sqrt(x)/2dummy <- data.frame(x=x, y= x + rnorm(x)*w)dummyfm <- lm(y ~ x, data=dummy)summary(fm)fm1 <- lm(y ~ x, data=dummy, weight=1/w^2)summary(fm1)attach(dummy)lrf <- lowess(x, y)plot(x, y)lines(x, lrf$y)abline(0, 1, lty=3)abline(coef(fm))abline(coef(fm1), col = "red")detach()plot(fitted(fm), resid(fm), xlab="Fitted values", ylab="Residuals", main="Residuals vs Fitted")qqnorm(resid(fm), main="Residuals Rankit Plot")rm(fm, fm1, lrf, x, dummy)第二部分将研究
Michaelson 和 Morley 测量光速的经典实验。这个数据集可以
从对象 morley 中得到,但是我们从中读出数据以演示
函数 read.table 的作用。
filepath <- system.file("data", "morley.tab" , package="datasets")filepathfile.show(filepath)mm <- read.table(filepath)mmExpt 列),每次运行 20 次
(Run 列)的观测得到。数据框中的 sl 是光速的记录。
这些数据以适当形式编码。
mm$Expt <- factor(mm$Expt)mm$Run <- factor(mm$Run)Expt 和 Run 改为因子。
attach(mm)plot(Expt, Speed, main="Speed of Light Data", xlab="Experiment No.")fm <- aov(Speed ~ Run + Expt, data=mm)summary(fm)fm0 <- update(fm, . ~ . - Run)anova(fm0, fm)detach()rm(fm, fm0)我们现在查看更有趣的图形显示特性:等高线和影像显示。
x <- seq(-pi, pi, len=50)y <- xf <- outer(x, y, function(x, y) cos(y)/(1 + x^2))oldpar <- par(no.readonly = TRUE)par(pty="s")contour(x, y, f)contour(x, y, f, nlevels=15, add=TRUE)fa <- (f-t(f))/2fa 是 f 的“非对称部分”(t() 是转置
函数)。
contour(x, y, fa, nlevels=15)par(oldpar)image(x, y, f)image(x, y, fa)objects(); rm(x, y, f, fa)R 可以做复数运算。
th <- seq(-pi, pi, len=100)z <- exp(1i*th)1i 表示复数 i。
par(pty="s")plot(z, type="l")w <- rnorm(100) + rnorm(100)*1iw <- ifelse(Mod(w) > 1, 1/w, w)plot(w, xlim=c(-1,1), ylim=c(-1,1), pch="+",xlab="x", ylab="y")lines(z)w <- sqrt(runif(100))*exp(2*pi*runif(100)*1i)plot(w, xlim=c(-1,1), ylim=c(-1,1), pch="+", xlab="x", ylab="y")lines(z)rm(th, w, z)q()