r語言(二)筆記

2022-09-12 07:33:16 字數 4073 閱讀 6140

#概述: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為函式名。類把資料和資...