?問號
?符號功能是查詢線上說明, 例: ?plot, 其功能與 help(plot) 相同, 當然使用 ?'plot' 或 ?"plot"結果皆相同. 例: ?'+' 可查詢算數運算功能.
> lotto <- sample(49,6)
> lotto
[1] 16 1 49 46 43 7
# 取出iris資料集的Species欄位資料, 其結果為向量
iris$Species
<-運算子
<-為指派運算子, 將右邊的運算結果指派至左邊物件, 強烈建議指派運算子不要使用等號(=), 以免與函數中的參數相混淆.> 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), 如果在小括號前加上資料物件名稱, 此時會有錯誤產生.
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("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"
參考: ?'@' 線上說明
參考: http://adv-r.had.co.nz/S4.html
# 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)
::運算子一般用於指定套件的函數, 如果不同套件,確有相同函數名稱,此時使用
套件名稱::函數名稱
# 本例僅作為::的說明使用, 不加上::運算子亦可執行
程式碼
# ?問號
?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]]
Thanks! It's very helpful.
回覆刪除Hi國倫,有問題歡迎討論.
刪除大括號的部分還不慎理解 例如 40行的 } else {
回覆刪除另外38行的%%是什麼意思呢?
第40行:
刪除else 表示 if (i %% 2 == 0) 的結果為FALSE時,
則執行 print(paste0(i, "是奇數"))
第38行:
%% 表示計算餘數
另,請問 "~" 在R中的意思為何?
回覆刪除# ~ 符號可用於線性模型lm , 例: dependent variable ~ independent variables
刪除carsLinerModel <- lm(dist ~ speed, data = cars)
carsLinerModel
# ~ 符號可用於aggregate函數, 計算變數 ~ 群組變數
# 以下範例, 依Type為群組, 計算 Price 的群組平均值
data(Cars93, package = "MASS")
aggregate(Price ~ Type, data = Cars93, FUN = mean)
請問[c(62,830), "fare"][[1]][1] 要怎麼讀這個式子
回覆刪除Hi friend,
刪除參考以下範例, 運算子的解析與輸入的資料物件有關係, 考慮資料框物件.
data(titanic_train, package = "titanic")
titanic_train[c(62,830), "Fare"] # 結果為向量,元素長度為2.
titanic_train[c(62,830), "Fare"][[1]] # 因上個步驟結果為向量, 使用串列 list [[ ]]的用法取出第1個元素, 本例結果為一個元素.
titanic_train[c(62,830), "Fare"][[1]][1] # 結果為1個元素向量的第1個元素, 結果為80.
# end
pt_unmatch[, .(mean_age = mean(age),prop_male = mean(male) * 100,prop_hsk = mean(hsk) * 100),by = .(bed_day_7)]可以請教一下為什麼要打
回覆刪除.()嗎?
Hi friend, pt_unmatch 不知是什麼套件的函數. 如果方便, 請提供套件名稱, R中應該沒有 .( ) 函數或參數用法吧!
刪除