Hackpads are smart collaborative documents. .

Meng-Ying Tsai

794 days ago
Unfiled. Edited by Hsu Heng-Yu , Meng-Ying Tsai 794 days ago
  • Chapter 1: Intro to Basics
 
  • Chapter 2: Vectors
  • Create and Name Vectors
  • Vector Arithmetic
  • Vector Subsetting
 
  • 此外還有 double (更高精確度的浮點數)、complex (複數)、raw (raw bytes)
Hsu H
  • complex 不是複數嗎?
Meng-Ying T
  • 感謝XD
  •  
 
 
 
  • create: 建立 vector
  • > fruits <- c('apple', 'banana', 'orange')
  • names: 命名 vector 每個位置的名稱
Hsu H
  • 一般的方法
  •     > earn <- c(10,20,30,20,0)
  •     > day <- c('mon','tues','wed','thur','fri')
  •     > names(earn) <- day
  • 也可以這樣:
  •     > earn <- c(mon = 10, tues = 20, wed = 30, thur = 20, fri = 0)
  • 檢視長度
  • > length(my_vector)
  • Coercion
  • vector 會自動 coercion
  • > poker_cards <- c(1, 3, 8, 'Q', 9, 5, 2, 'K', 4, 6, 'J', 7) # 全部轉換為 character
  • > class(poker_cards)
  • [1] "character"
 
Vector Arithmetic
  • 和一個數字做運算會一個一個算
  • > c(1, 2, 3) + 2 # 相當於 c(1 + 2, 2 + 2, 3 + 2)
  • [1] 3 4 5
  • > earnings = c(50, 100, 30)
  • > earnings ^ 2 # 相當於 c(50^2, 100^2, 30^2)
  • [1] 2500 10000 900
  • 長度 vector 做運算,會一個對到一個算
  • > c(1, 2, 3) + c(4, 5, 6) # c(1 + 4, 2 + 5, 3 + 6)
  • [1] 5 7 9
  • 試試看
  •     > c(1, 2, 3) + c(1, 2) # 試試看會發生什麼事
  •     > c(1, 2, 3, 4) + c(1, 2) # 試試看會發生什麼事
  • > earn <- c(10,50,20,10,5)
  • > sum(earn)
Hsu H
  • [1] 95
  • 邏輯運算子 >: 會回傳 logical 的 vector
  • > c(1, 2, 3) > 2
  • [1] FALSE FALSE TRUE
 
Vector Subsetting
  • 取裡面元素
  • >  remain <- c(spades = 11, hearts = 12, diamonds = 11, clubs = 13)
  • 第一種取法: 用 index
  •     > remain[1]
  •     spades
  •         11
  • 第二種取法: 用 name
  •     > remain["spades"]
  •     spades
  •         11
  • 取子集,也就是取多個元素: 造 vector 塞進中括號
  • > remain[c(1, 4)]
  • spades  clubs
  •     11     13
  • > remain[c(4, 1)]
  •  clubs spades 
  •     13     11
  • > remain[c("clubs", "spades")]
  •  clubs spades 
  •     13     11
  • 在中括號裡面用負數: 代表不取某些元素
  • > remain[-1] # 去掉 remain[1]
  •   hearts diamonds    clubs 
  •       12       11       13
  • > remain[-c(2, 3)] # 去掉 remain[c(2, 3)]
  • spades  clubs 
  •     11     13
  • 用 logical vector 來選取
  • > remain[c(TRUE, FALSE, FALSE, TRUE)]
  • spades  clubs 
  •     11     13
  • > selection_vector <- c(FALSE, TRUE, FALSE, TRUE)
  • > remain[selection_vector]
  • hearts clubs
  •     12    13
  • 如果丟到 index 裡面的 vector 不夠長,他就會「循環」補完。
  • > remain <- c("spades"=11, "hearts"=12, "diamonds"=11, "clubs"=13)
  • > remain[c(TRUE, FALSE)] # 自動補完成 remain[c(TRUE, FALSE, TRUE, FALSE)]
  • spades  diamonds
  •     11        11
  • > remain[c(TRUE, FALSE, TRUE)] # 和 remain[c(TRUE, FALSE, TRUE, TRUE)] 等價
  •   spades diamonds    clubs 
  •       11       11       13
 
 
  • vector 和 matrix 的差異
...

Contact Support



Please check out our How-to Guide and FAQ first to see if your question is already answered! :)

If you have a feature request, please add it to this pad. Thanks!


Log in