R語言程式設計藝術 第2章 向量(上)
2.1 標量、向量、陣列與矩陣
向量長度:length()
矩陣、陣列本質上是向量。
2.2 宣告
變數可以直接賦值,無需提前生命,但是不可以直接引用向量中的元素,即不可以突然冒出y[2]。
2.3 迴圈補齊
在對兩個向量使用運算子時,如果要求這兩個向量具有相同的長度,R會自動迴圈補齊(recycle),即重複較短的向量,直到它與另一個向量長度相匹配。
例子:
矩陣也是迴圈補齊的:
2.4 常用的向量運算
向量運算,是兩個向量對應位置的子元素逐一運算。
向量索引,取子集操作x[c(1,3)]
建立向量:
“:”生成指定範圍內數值構成的向量。
seq()(由sequence得來),用來生成等差序列
rep()重複向量常數,引數times指定整體重複次數,each指定每個元素重複次數。
2.5 使用all()和any()
any() 和all() 函式分別報告其引數是否至少有一個或全部為TRUE,返回邏輯值。
擴充套件案例:尋找連續出現1 的遊程
findruns <- function(x,k) {
n <- length(x)
runs <- NULL
for (i in 1:(n-k+1)) {
if (all(x[i:(i+k-1)]==1)) runs <- c(runs,i)
}
return(runs)
}
為提高運算速度,預先分配記憶體空間
findruns1 <- function(x,k) {
n <- length(x)
runs <- vector(length=n)
count <- 0
for (i in 1:(n-k+1)) {
if (all(x[i:(i+k-1)]==1)) {
count <- count + 1
runs[count] <- i
}
}
if (count > 0) {
runs <- runs[1:count]
} else runs <- NULL
return(runs)
}
2.6 向量化運算子
多數函式是向量輸入,向量輸出。sapply可實現向量輸入,矩陣輸出。如果要把輸入限制為標量:
function(x,c) {
if (length(c)!=1) stop("vector c not allowed")
return((x+c)^2)
}
相關文章
- R 語言程式設計藝術筆記程式設計筆記
- 語言設計的藝術
- 計算機程式設計藝術 第2卷 (轉)計算機程式設計
- 《程式設計師程式設計藝術》程式設計師
- Affinity Designer:向量藝術之舞,設計無限可能
- Battleship程式設計語言與技術BAT程式設計
- 計算機程式設計藝術計算機程式設計
- JavaScript DOM 程式設計藝術(第2版) 讀書筆記JavaScript程式設計筆記
- 程式設計藝術家之路程式設計
- 《R語言入門與資料分析》——向量索引R語言索引
- Python函數語言程式設計術語大全Python函數程式設計
- 高階程式設計語言第2次作業程式設計
- 高階語言程式設計第2次作業程式設計
- 高階程式語言設計第5次作業
- 程式設計師和程式藝術家程式設計師
- [翻譯]高德納(Knuth)談計算機程式設計藝術(上)計算機程式設計
- Java併發程式設計藝術Java程式設計
- Redux中的程式設計藝術Redux程式設計
- 談UIView Animation程式設計藝術UIView程式設計
- 優秀程式設計的“藝術”程式設計
- 組合語言的藝術(轉)組合語言
- Python語言程式設計 (第11期) 測驗8: 程式設計方法學Python程式設計
- 推薦JS入門書:JavaScript DOM程式設計藝術(第2版)JSJavaScript程式設計
- 一小時向非程式設計師介紹 R 程式語言程式設計師
- ‘程式語言‘ ’程式設計工具’程式設計
- 程式語言設計,程式設計哲學程式設計
- Michael Feathers:程式設計的藝術程式設計
- Unix哲學(Unix程式設計藝術)程式設計
- Java併發程式設計的藝術Java程式設計
- Unix程式設計藝術,Unix哲學程式設計
- 程式設計也是一門藝術啊程式設計
- oracle程式設計藝術筆記-1Oracle程式設計筆記
- oracle程式設計藝術筆記-2Oracle程式設計筆記
- QT QML模組的程式設計藝術QT程式設計
- C語言程式設計C語言程式設計
- 函數語言程式設計實用介紹(上)函數程式設計
- Java 帝國之函數語言程式設計(上)Java函數程式設計
- Java技術分享之函數語言程式設計!Java函數程式設計