#概述:r是用於統計分析、繪圖的語言和操作環境
#物件:
#資料型別--統稱為物件
#向量(vector):用於儲存數值型、字元型或邏輯型資料的一維陣列。
#定義向量:
v<-1
v1<-c(1,2,3) 或者 assign('v1',c(1,2,3))
v<-1:10 #1~10
is.vector(v)
#向量的輸出:
v 或者 print(v1)
#向量的操作函式:
#排序:sort(v1) 倒序: rev(v1)
#最大值 最小值 平均值
max(v1) min(v1) mean(v1)
#矩陣(matrix):矩陣是二維陣列,可以描述二維資料
#定義矩陣
#dim函式(拆分向量)
m1<-1:100
dim(m1)<-c(10,10)
#matrix函式
m2<-matrix(1:6,2,3)
m3<-matrix(1:6,3,2)
#array函式
m4<-array(1:30,dim=c(5,6))
#矩陣下標
m4[2,2]
#矩陣相乘 %*%
m2%*%m3
#矩陣轉置
m4<-matrix(1:24,4,6)
aperm(m4)
#陣列(array):陣列與矩陣類似,是矩陣的擴充套件,維度≥3.
#定義陣列
#dim函式
a1<-1:24
dim(a1)<-c(3,4,2)
#array函式
a2<-array(1:60,dim=c(3,4,5))
#陣列下標
a2[1,1,2]
#自定義物件:
#新增屬性方法
#man1<-c() #內容為空的物件,null不能有屬性的
man1<-c(100)
attributes(man1) #檢視屬性
attr(man1,'name')<-'bai'
attr(man1,'dept')<-'sxb'
#list方法(json)
man2<-list(name='zhw',dept='sxb',child.count=1,child.name=c('3.0'))
#獲取物件屬性:$
man2$name
man2$child.name;
#其他help.start();
rm(list=ls()) #清空所有物件
objects() #檢視所有物件
is.*** #判斷型別
as.*** #轉換型別
###注釋
#控制語句
#條件語句
#if-else語句
# if
num<-3
if(num==3) print('num==3')
if(num==3)
#if else
num<-2
if(num!=3)print('num!=3') else print('num==3')
#else if
if(num==1)else if(num==2)else
#ifelse
x<-1
ifelse(x>2,y<-2*x,y<-3*x) ## 三目運算子
#switch語句 switch(expr, list)
#用法1 expr為數值型
num<-5
switch(num,'值為1','值為2','值為3','值為4')# 數值大小,對應的list的項
switch(2,'值為1','值為2','值為3','值為4')
switch(2*2,5-4,5+4,5/4,5*4) #第乙個引數 可以為 運算子
#用法2 expr為字串 list為有名定義時
mylike<-'水果';
switch(mylike,水果='蘋果',蔬菜='茄子') #已知mylike值水果,它會找有名list中是否有這個元素,並把內容顯示出來
#迴圈語句
#for語句
for( i in 1:10) print(i) #js
for( j in 1:10) print(1:j)
#while語句
i<-1;
while(i<10)
#repeat語句 #loop
repeat
#自定義函式
#myfunction <- function(arg1, arg2, ... )
#函式體通常包含三部分:
#1異常處理
#2內部處理過程
#3返回值
#例子1 隨機數產生,畫圖
#rnorm(n,mean,sd)n:隨機數個數mean:期望 sd:方差
function11 <- function()
function11()
#有兩個引數
function12 <- function(x,y)
x <- rnorm(100)
y <- rnorm(100,2,3)
function12(x,y)
#例子2 計算標準差
myfunc2<-function(x)
if(length(x)==1)
result<-sqrt(sum((x-mean(x))^2)/(length(x)-1))
return(result)
}myfunc2(c('a','b'));
### 後續 debug(myfunc2);
#基本繪圖技巧
#繪製圖
x<-1:100
y<-100+x*5
plot(y)
plot(y,type='l')
#繪製一千個正態分佈隨機數的頻率直方圖
x<-rnorm(1000,30,10)
hist(x)
#使用核密度估計函式density(),在直方圖上繪製密度曲線
#hist()函式必須設定freq引數為f才能顯示密度曲線
x<-rnorm(1000,30,10)
hist(x,freq=f) # f 是 false 的簡稱 區分大小寫
lines(density(x),col='red')
box() #加乙個方框
# 莖葉圖很直觀的表現出資料的分布情況
x <- rnorm(100,5,1)
stem(x)
# 繪製10個正態分佈隨機數的條形圖
x <- rnorm(10,30,10);barplot(x)
box() # 在當前圖上加個方框
# 繪製餅圖
x <-1:5;pie(x,col=rainbow(5))
box()
# 繪製箱線圖
# 中間黑線為中位數字置;上下框線為上下四分位數字置;上下觸鬚為1.5倍四分位數間距;如果有孤立點表示異常值
x <-rnorm(10,10,3);boxplot(x)
# 根據指定函式繪製指定範圍的曲線圖
curve(sin, -2*pi, 2*pi, xname = "t")
library(quantmod)
getsymbols('^gspc',src='yahoo',from='2000-1-1',to=sys.date());
print(head(gspc))
print(tail(gspc))
getsymbols('aapl',src='yahoo',from='2000-1-1',to=sys.date());
print(head(aapl))
print(tail(aapl))
getsymbols('cftlf',src='yahoo',from='2000-1-1',to=sys.date());
print(head(cftlf))
print(tail(cftlf))
#晚總結
理解矩陣 二 筆記
僅記錄學習孟巖老師的 blog 時的收穫,孟巖老師的原文章見 初等數學是研究常量的數學,是研究靜態的數學,高等數學是變數的數學,是研究運動的數學。重溫微積分 齊民友教授 運動 連續過程,逐點經過。躍遷 不需要逐點經過,瞬間發生的行為。矩陣是線性空間裡躍遷的描述。矩陣是線性空間裡變換的描述。變換 空間...
python雜記 二(筆記)
進行分片的時候,分片的開始和結束點需要進行指定 不管是直接還是間接 而另外乙個引數 在python 2.3 加入到內建型別 步長 step length 通常都是隱式設定的。在普通的分片中,步長是1 分片操作就是按照這個步長逐個遍歷序列的元素,然後返回開始和結束點之間的所有元素。numbers 0 ...
Matlab 程式設計基礎(二)筆記
執行字串所代表的函式,可以在函式執行中修改所執行的指令和引數。y eval expression expression指定的運算 a1,a2,a3,eval func b1,b2,b3,呼叫func函式檔案輸出結果 y1,y2,feval func arg1,arg2,func為函式名。類把資料和資...