tips:r

我正在看 Introduction to R,順便記些東西。

Chapter 2

* help.search(“foo”), help(“foo”), ?foo * 如果一個式子中的 vector 不一樣長,會把短的一直重複到跟長的一樣,所以結果的長度會是式子中最長的長度 * 次方 ^ * log, exp, sin, cos, tan, sqrt, max, min… 這些都有 * 如果知道或者玩過 !Matlab 的話,應該對 vector 不會陌生才對 :P * foo←bar 就是 assignement,也可以寫成 assign(foo, bar) * c(…) 是把 values 轉成 vector 或者 list * 任何對於 NA 作動作,結果也都是 NA * is.na(), is.nan() 前者對於 NA, !NaN 都是 TRUE,後者對 !NaN 是 TRUE * vector 可以用 [] 來選擇一些東西,可以用 logical vector, pos int(included), neg int(excluded), vector of char(要先用 names(foo)←c(“bar”,…) 指定)

Chapter 3

* vector 有四種不同的 mode,分別是 logical、numberic、complex、character * mode(foo), length(bar) * as.something(foo), as(foo, “something”) * e←something() 生出一個 empty 然後 mode 是 something * 會自動調整 length :p * foo←foo[2 * 1:5] 只會留下 even index * attributes(foo), attr(foo, which)←val * 每個 object 有一種 attrib 叫做 class,會影響 plot()、summary() 等,也會影響顯示的方式,可以用 class(obj)←val 指定

Chapter 4

* factor 大概是在說可以用來紀錄其他相同長度的 vector 的類別,看一下他前面的例子應該就會懂 * ragged array 是指混雜 vector 跟 labeling factor 的東西,像是用 tapply(vector, factor, function) 生出來的東西 * factor 的 order 是用 alphabetical,那也可以用 ordered() 來改

Chapter 5

* dim(z)←c(3,5,10) 會讓 z 被當作 3x5x10 的 array * R 跟 FORTRAN 一樣,是用 column major order * 用 [] 來指定 subscript,多個就用 , 分開,沒寫的話就是指全部。如果 a 是 c(3,4,2) 那 a[2,,] 是 c(4,2),a[,,] 是全部。 * 除了用上面的指定方式外,也可以用 index array 來弄,比方說 x 是 4×5 的 array,i 是 3×2 的 index array,x[i] 就是 x[i[1,1],i[1,2]]、x[i[2,1],i[2,2]]… 應該很好懂啦

未完

Chapter 6
Chapter 7
Chapter 8
Chapter 9

* 用 {} 把 expr 包起來 * && 跟 || 作用在 vector length 是 1 的元素上 * if (expr1) expr2 else expr3 * 另外也有 vector-wise 版本的 if: ifelse(cond, a, b) * for (loop_variable in expr1) expr2 * for() 在 R 裡面通常不太用到,直接對整個物件動作會比較清楚,也比較快! * 當然,也有 repear expr 跟 while (cond) expr, break, next

Chapter 10
Chapter 11
Chapter 12

* locator() 可以用滑鼠直接畫圖

雜項

* ceiling(), floor(), round() 就是天花板、地板跟四捨五入 * example(function) * gc() 硬叫他收一次垃圾 * plot(iris [ 1:2 ], pch = 21, bg = c(“red”, “green3”, “blue”)[unclass(iris$Species)]) 可以依 iris 的前兩個 feature 作 scatterplot,其中根據 class 不同會有不同顏色 * rainbow() 可以生出連續的色彩 * f←function(x) match.call() 的話,f(a) match.call() 會得到 f(x = a) * table(factor) 可以得到每個 level 的數量 * which.max(x) 可以看 x 裡面 min 的 index * make.names() 可以幫你把變數的名字改成正確的 * split.screen() 可以在單一 device 上面切出不同區域

tips/r.txt · Last modified: 2007/03/06 13:54 (external edit)