r ? <- $ () [] {} [[ @ :: 常用特殊運算子 (operators)

本篇文章說明使用R時, 會有不同特殊運算子需求, 以下說明使用方式.

?問號

?符號功能是查詢線上說明, 例: ?plot, 其功能與 help(plot) 相同, 當然使用 ?'plot'?"plot"結果皆相同. 例: ?'+' 可查詢算數運算功能.


<-運算子

<-為指派運算子, 將右邊的運算結果指派至左邊物件, 強烈建議指派運算子不要使用等號(=), 以免與函數中的參數相混淆.

> lotto <- sample(49,6)
> lotto
[1] 16  1 49 46 43  7

$符號

$符號用於取出物件內容,亦可用於串列資料的讀取.

# 取出iris資料集的Species欄位資料, 其結果為向量
iris$Species

()小括號

()符號大概是接觸R最常使用符號, 其使用時機為函數名稱

readLines(system.file("DESCRIPTION")) , summary(iris), plot(iris), 如果在小括號前加上資料物件名稱, 此時會有錯誤產生.

[]中括號

[]中括號用於將資料進行條件篩選的指標(indexing), 例: 一維或二維資料物件取出部份符合條件資料.

# Species為setosa的Sepal.Length資料
iris$Sepal.Length[iris$Species == "setosa"]

# 符合Sepal.Length大於5且Sepal.Width大於4的所有資料
iris[iris$Sepal.Length >5 & iris$Sepal.Width > 4,]

二維資料如matrix, data.frame 使用[列, 行] 方式取出資料或是取出直行欄位資料.
# 讀取iris第1至4欄資料
iris[1:4]

{}大括號

{}大括號用於標註套件名稱程式區塊.

?plot 會顯示 plot {graphics}表示 plot 函數隸屬於graphics套件.

# 程式區塊
> for (i in 1:10) {
+   if (i %% 2 == 0) {
+     print(paste0(i, "是偶數"))
+   } else {
+     print(paste0(i, "是奇數"))
+   }
+ }
[1] "1是奇數"
[1] "2是偶數"
[1] "3是奇數"
[1] "4是偶數"
[1] "5是奇數"
[1] "6是偶數"
[1] "7是奇數"
[1] "8是偶數"
[1] "9是奇數"
[1] "10是偶數"

[[ 二個左中括號

如果資料物件有顯示此符號, 一般為串列(list).
> list("RWEPA", c("R", "Python", "Julia"))
[[1]]
[1] "RWEPA"

[[2]]
[1] "R"      "Python" "Julia"

> mylist <- list(web="RWEPA", programming=c("R", "Python", "Julia"))
> mylist$programming
[1] "R"      "Python" "Julia"
> mylist[[2]]
[1] "R"      "Python" "Julia"

@運算子

@符號用於取出S4物件內容(Slot). 目前已套件支援S4物件型態, 例: kernlab 套件. S4資料物件存取須使用@運算子. 
參考: ?'@' 線上說明
參考: http://adv-r.had.co.nz/S4.html


::運算子 (Double Colon)

::運算子一般用於指定套件的函數, 如果不同套件,確有相同函數名稱,此時使用
套件名稱::函數名稱

# 本例僅作為::的說明使用, 不加上::運算子亦可執行
graphics::plot(as.ts(iris[-5]), main="")


程式碼

# ?問號
?plot
help(plot)
?'plot'
?"plot"
?'+'

# <-運算子
# 隨機選取1~49的6個數值
lotto <- sample(49,6)
lotto

# $符號
# 取出iris資料集的Species欄位資料, 其結果為向量
iris$Species

# () 小括號
readLines(system.file("DESCRIPTION"))
summary(iris)
plot(faithful)

# []中括號
# Species為setosa的Sepal.Length資料
iris$Sepal.Length[iris$Species == "setosa"]

# 符合Sepal.Length大於5且Sepal.Width大於4的所有資料
iris[iris$Sepal.Length >5 & iris$Sepal.Width > 4,]

# 讀取iris第1至4欄資料
iris[1:4]

# {}大括號
# 套件名稱
# plot {graphics}

# 程式區塊
for (i in 1:10) {
if (i %% 2 == 0) {
print(paste0(i, "是偶數"))
} else {
print(paste0(i, "是奇數"))
}
}

# [[ 串列
list("RWEPA", c("R", "Python", "Julia"))
mylist <- list(web="RWEPA", programming=c("R", "Python", "Julia"))
mylist$programming
mylist[[2]]

RWEPA

我是 MING-CHANG LEE, 興趣是 R/Python程式設計,資料視覺化與企業應用。