下麵的會話讓你在操作中對 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()