R入門

基礎

ls()顯示內存中的對象

rm()刪除內存中對象,rm(list=ls())刪除全部

?lm顯示幫助

help(lm)幫助

getwd()獲取當前工作目錄

setwd("C:/data")改變工作目錄

從外部文件中讀取數據

mydata<-read.table("test.data"), 返回的是一個數據框

scan()返回一個數值型向量

read.fwf()用於讀取固定寬度格式的數據

存儲數據

write(變量,"file.txt")

 

R Java API

R本身沒有提供Java的API,有一個開源項目rJava在做這個工作,http://www.rforge.net/rJava/

 

3.4 產生序列:

x <- 1:30

seq(1,5,0.5) 遞增數字

seq(length=9,from=1,to=2)

rep(1,30) 重複數字

sequence(5:4)

sequence(c(10,5))

sequence的規律看結果

gl() 生成不同水平/層次數據

gl(3,5,label=c("高","中","低"))

expand.grid()創建一個數據框

expand.grid(h=c(60,80),w=c(100,300),sex=c("M","F"))

 

3.5.1數據結構:

向量(Vector),同Java的Vector類似,用 x <- numeric(3)這種形式創建一個vector,之後通過x[1] <-3 來修改。還可以放logical(),character()。向量包含兩個參數:mode類型,length長度

因子(Factor),不僅包括分類變量本身還包括變量不同的可能水平。

創建因子:factor(1:3,levels=1:5),factor(1:3,lables="a","b","c"),factor(1:5, exclude=4)

levels(ff)提取水平。 level水平做何解釋?

 

矩陣

實際上是有一個附加屬性維數dim的向量。

創建矩陣:

 matrix(1:6,2,3)

另一種方法:

x<-1:15

dim(x)<-c(5,3)

x已經變成了矩陣

 

數據框(Data Frame)

可以由read.table間接創建,也可以用函數data.frame創建

x<-1:4 ; M<-c(10,35)

df<-data.frame(x,M)

 

列表list

x<-1:4,y<-c(10,35)

list(x,y) 兩個序列

 

時間序列(time-series)

ts(1:10,start=1999)

ts(1:10,start=1999,frequency=12)

ts(1:10,start=1999,frequency=12,start=c(2001,3))

 

表達式expression

eval()對表達式求值

有些函數可以以表達式作爲參數,如D()求偏導數函數

D(exp1,"x")表示對x求偏導

 

3.5.2類型轉換

as.numeric,as.logical,as.character

 

3.5.3運算符

== 分單個比較,整體比較實用identical和all.equal

x<-1:3;y<-1:3

x==y

identical(x,y);all.equal(x,y)

all.equal比較近似相等,identical完全相等

 

3.5.4下標系統

下標可以是向量

x<-1:5

從矩陣取值、設置使用下標時別忘了逗號

x<-matrix(1:6,3,2)

x[,2]<-c(11,12,13)

x[,1]默認返回的是向量,x[,1,drop=FALSE]返回的是一個3行1列矩陣

下標爲負數表示不顯示某個位置的值,如x[1]表示不顯示矩陣1行1列那個值,x[-1,]表示不顯示第1行

對於向量、矩陣和數組,下標還可以是比較運算表達式

如x[x>=5] <-20,將把矩陣中>=5的值替換成20

下標還可以是logical類型的FALSE或TRUE,TRUE則顯示,FALSE則不顯示

 

3.5.5對象的名稱

names,colnames,rownames,dimnames

 

3.5.6數據編輯器

data.entry(x)

 

3.5.7常用函數和數學運算

c()連接對象

手工輸入序列 x <- c(1,2,3)

 

向量可以進行常規的算術運算

x<-1:4;y<-rep(1,4)

z<-x+y

不同長度的向量也能相加,最短的向量將被循環使用。

 

3.5.8矩陣計算

rbind()上下合併矩陣

cbind()左右合併矩陣

x<-matrx(1,2,2);y<-matrix(2,2,2)

x %*% y 矩陣乘積

t(x)矩陣轉置

diag()獲取矩陣的對角元,設置矩陣的對角元,產生對角矩陣

diag(c(10,20,30),3)

solve()矩陣的逆

qr()分解矩陣

eigen()計算特徵值和特徵向量

svd()奇異值分解

 

R繪圖

首先也要加載繪圖設備,在Windows系統下用x11(),windows(),pdf()等加載

關閉設置dev.off()

設備列表:dev.list()

 

兩種繪圖函數:

高級繪圖函數high-level plotting functions 創建一種新圖形

低級繪圖函數low-level plotting functions 在現存圖形上添加元素

繪圖參數graphical parameters控制繪圖選項

 

layout() 等間隔分配子窗口

layout.show(4)顯示4四格

 

繪圖參數在繪圖之前先設定好。

pch符號:pch(plotting character),用0:25表示26個標識

plot(),以座標軸畫圖

plot(x,y,type),

type有

"p" for points, 

"l" for lines, 

"b" for both, 

"c" for the lines part alone of "b", 

"o" for both ‘overplotted’, 

"h" for ‘histogram’ like (or ‘high-density’) vertical lines, 

"s" for stair steps, 

"S" for other steps, see ‘Details’ below, 

"n" for no plotting

如何做密度曲線

常用辦法:做出x的一個序列,然後做出dfunction(x),fuction指各種概率分佈。如

x=seq(-3,3,0.05)

plot(x,dnorm(x),type="l")

lines(x,dt(x,1))

 

 

R的統計分析

需要嚴重補充

 

 

R編程

 

一般將程序保存爲.R後綴文件,如果有語法錯誤則在運行時會指出哪行有錯誤。

可以通過source("test.R")來運行

在R運行界面中如果輸入{ 則R一直等待 }的出現才結束本條語句

 

在R中顯式的運行循環( for in,while等)效率是很低的,所以儘可能通過其他方式來避免顯式循環,可選的方式有:

邏輯索引向量替代,如y[x%%2==0] <- 0

apply(), 如 apply(X,2,mean), 第二個參數1表示對行操作,2表示對列操作,這裏表示對矩陣的列做均值計算。

lapply()用於對list對象進行操作

sapply() 更爲靈活的一個apply,可以接受向量或者矩陣作爲主要參數

 

自定義函數

myfunc <- function(arg1,arg2...) {

}

定義好了函數之後,可以通過source("myfunc.R")來加載,或者在啓動R的時候加載,需要在.RData中定義,或者在.Rprofile中定義

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章