R語言入門

一個不推薦自己編程,高度優(yōu)化的面向對象的靜態(tài)統(tǒng)計語言

1、序

用知乎體來整理
先假設啥好的軟件都沒有掷豺,我們先來想想一個優(yōu)秀的科學計算軟件需要哪些東西。

  1. 編程簡潔但又能進行一定的自由定制薄声,比如寫一個自己行業(yè)所需要的工具箱之類的
  2. 速度快当船,能適應越來越大的數據流
  3. 具有可視化功能,可以繪制豐富的圖表

那應該怎么設計軟件默辨?

  1. 設計各種高級的數據類
    1). 支持字符串和數組的向量類型生年,在MATLAB中兩者是分開來的
  2. 數據類的基本操作或者函數,初始化廓奕,索引抱婉,切片,邏輯索引桌粉,邏輯判斷蒸绩,賦值,
  3. 簡單的數據生成铃肯,如數列患亿,特殊矩陣等
  4. 控制流
  5. 繪圖
  6. 豐富的函數庫,線性代數押逼,概率步藕,圖像處理,IO挑格,時間序列咙冗,機器學習常用算法
  7. 外部接口,混合編程

2漂彤、數據結構

最底層的數據結構為:字符雾消,數字,整數挫望,邏輯立润,復數

第一層:向量,列表媳板,因子
第二層(class):矩陣桑腮,數據框等

- 向量:同種數據格式,numeric, logical, char)
        demo :x<- c(1,2,3,4)
                      x<-c('M','N')
- 矩陣:帶size的向量
                 demo:  dim(x)<-c(2,3) 

                 matrix(c(1:10),nrow=2,ncol=5)
- 列表:類似于元胞數組蛉幸,對象的集合
                   demo:  list(c(1:10),"M")
- 數據框: 行必須相同的list破讨,統(tǒng)計常用的一種格式旨巷,類似于SPSS,數據庫中的表
                     demo:   data.frame(a,b,c)
- 因子 : factor

軟件是面向對象編程的添忘,每一個這樣的向量就是一個對象采呐,一些固有屬性如下

length  對象的長度,多指容器
names   名稱
class   類
str 結構
dim 維數搁骑,一維是沒有維數的
head    
tail    

3斧吐、序列的生成:

a<-1:10
a<-10:1
a<-seq(3,10,2)
a<-seq(3,10,length.out=11)# 等價于linspace
a<-rep("hi",2)
a<-rnorm(100,0,1)
a<-rbind(1:10,2:4)
a<-cbind(1:10,2:4)

4、字符串操作

nchar   字符串長度   nchar(c('sdf','sdf'))
paste仲器,paste0    字符串拼接   
strsplit    字符串分割   
substr  字符串截取   
sub,gsub    字符串替代   
grep煤率,grepr  從序列中搜索特定字符串,返回索引值乏冀,后者返回邏輯值   
sprintf     
regexpr,gregexpr    正則表達式   
toupper,tolower 大小寫 

5蝶糯、系統(tǒng)內存操作

getwd,setwd,ls,rm,list.files

6、數據導入

w 導入分隔符文件
語法:  mydataframe <- read.table(file, header=logical_value,sep="delimiter", row.names="name")
參數說明:
     file 文件路徑(包含文件名)
     header 是否具有表頭
     sep 分隔符
     row.names

例子:
setwd("d:\\data")
grades <- read.table("studentgrades.csv", header=TRUE, sep=",")
w 導入files目錄下文本
files=paste("files/",dir("files"),sep="")
fs=c()
for(i in 1:length(files))
    fs[i] <- paste(readLines(files[i]),collapse="\n")          #按行讀取文本文件辆沦,每一行用“\n”隔開
rcorp <- Corpus(VectorSource(fs))   #把字符串生成corpus格式昼捍,VectorSource把字符串變成輸入的文檔格式,幾個字符串就表示有幾個文檔
w 導入詞典
install.packages('rJava')                                       #安裝rJava
install.packages("Rwordseg"肢扯,repos="http://jliblog.com/crap")   #安裝Rwordseg
require(Rwordseg)                                               #加載
system.time(for(i in 1:10000) segmentCN("setence"))
installDict("E:/Download/userLibrary.dic")                      #導入詞典(userLibrary.dic)
options(dic.dir = "D:/day_file/R")                              #用戶自定義字典
loadUserDict()
insertWords("sentence")                                         #添加
removeWords("sentence")                                         #刪除
w 導入Excel數據
library(xlsx)
workbook <- "d:/data/tot.xlsx"
mydataframe <- read.xlsx(workbook, 1 ,encoding='UTF-8')

library(RODBC)  
channel=odbcConnectExcel("d:/test.xls")  
mydata=sqlFetch(channel,'Sheet1') # 如果是Excel2007格式數據則要換一個函數odbcConnectExcel2007 

注:rJava安裝之前需要配置Java環(huán)境變量
JDK下載:http://pan.baidu.com/s/1eQrKIaA
配置JAVA的環(huán)境變量: http://jingyan.baidu.com/article/f96699bb8b38e0894e3c1bef.html

保存和加載R的數據
保存和加載R的數據(與R.data的交互:save()函數和load()函數)

a <- 1:10  
save(a, file = "data/dumData.Rdata") # data文件為當前工作目錄下的文件妒茬,必須存在  
rm(a)  
load("data/dumData.Rdata")  
print(a)  
w 導入和加載.csv文件
導入和加載.csv文件(write.csv()函數和read.csv()函數)
var1 <- 1:5  
var2 <- (1:5) / 10  
var3 <- c("R", "and", "Data Mining", "Examples", "Case Studies")   
a <- data.frame(var1, var2, var3)   
names(a) <- c("VariableInt", "VariableReal", "VariableChar")   
write.csv(a, "data/dummmyData.csv", row.names = FALSE)  
b <- read.csv("data/dummmyData.csv") 

csv <- read.csv("tot5.csv",header=T, stringsAsFactors=F)         #header 第一行是否作為標題
w 導入SPSS/SAS/Matlab等數據集
# 導入spss的sav格式數據則要用到foreign擴展包,加載后直接用read.spss讀取sav文件  
library(foreign)  
mydata=read.spss('d:/test.sav')  
# 上面的函數在很多情況下沒能將sav文件中的附加信息導進來蔚晨,例如數據的label乍钻,  
# 那么建議用Hmisc擴展包的spss.get函數,效果會更好一些铭腕。  
library(Hmisc)  
data=spss.get("D:/test.sav") 
w 導入數據庫中的數據
library(RODBC)  
Connection <- odbcConnect(dsn="servername",uid="userid",pwd="******")  
Query <- "SELECT * FROM lib.table WHERE ..."  
# Query <- readChar("data/myQuery.sql", nchars=99999) 或者選擇從SQL文件中讀入語句  
myData <- sqlQuery(Connection, Query, errors=TRUE)  
odbcCloseAll() 

來自 http://blog.csdn.net/meegle/article/details/14164471

7银择、文件讀取

Data() #樣本數據
read.table 讀取類似于表格的文件,后最不限制累舷,支持分隔符浩考,支持表頭
read.csv,readHTMLTable,SQL(需要RMySQL)
底層的就是,scan(單元)笋粟,readlines(行)
最最底層的怀挠,file,gzfile,zfile,open
load: 導入R格式的數據析蝴,后綴為.Rdata

8害捕、文件輸出

R控制臺: print, cat (好用一些闷畸,內部可重定向)
cat(data,file=filename,append=T)
文件:sink:適合腳本的輸出尝盼,由一對命令控制,sink(filename)  ......   sink() 
高級:write.csv,save

9佑菩、索引與查找

向量索引 用[]盾沫,[1:5,]  [T,F,T]裁赠,支持邏輯索引
列表索引 用[[]], 類似于元胞,一個中括號返回的是子列表赴精。兩個返回的才是元素
名稱索引 用$   如data.frame里佩捞,x$a

邏輯查找
x<-x[x>1]  #記住圓括號一定是用于函數的

NA查找
is.na  這是一個函數,可以控制向量里面的NA值
但是在一些復雜的數據結構中不宜刪除NA值蕾哟,但其又不能用于統(tǒng)計一忱,于是很多函數有這樣一個參數,na.rm=TRUE

概率函數

d=密度函數
p=分布函數
q=分位數函數
r=生成隨機數函數

數據狂操作

http://athenaxu.blog.163.com/blog/static/205722039201421253349239/

控制流

apply:將函數應用到數據的某一個維度上
lapply/sapply: 將函數應用到列表上

機器學習

1谭确、主成分分析

princomp(x,)

hclust(d, method = "complete", members=NULL)

2帘营、典型相關分析

用于分析兩組變量之間的相關性

cancor(x, y, xcenter = TRUE, ycenter = TRUE)

3、mlogit 多類別邏輯回歸

4逐哈、e1071中的svm

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末芬迄,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子昂秃,更是在濱河造成了極大的恐慌禀梳,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,651評論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件肠骆,死亡現場離奇詭異出皇,居然都是意外死亡,警方通過查閱死者的電腦和手機哗戈,發(fā)現死者居然都...
    沈念sama閱讀 92,468評論 3 392
  • 文/潘曉璐 我一進店門郊艘,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人唯咬,你說我怎么就攤上這事纱注。” “怎么了胆胰?”我有些...
    開封第一講書人閱讀 162,931評論 0 353
  • 文/不壞的土叔 我叫張陵狞贱,是天一觀的道長。 經常有香客問我蜀涨,道長瞎嬉,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,218評論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上驻右,老公的妹妹穿的比我還像新娘结榄。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 67,234評論 6 388
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著钻趋,像睡著了一般烧董。 火紅的嫁衣襯著肌膚如雪毁靶。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,198評論 1 299
  • 那天逊移,我揣著相機與錄音预吆,去河邊找鬼。 笑死胳泉,一個胖子當著我的面吹牛啡浊,可吹牛的內容都是我干的。 我是一名探鬼主播胶背,決...
    沈念sama閱讀 40,084評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼巷嚣,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了钳吟?” 一聲冷哼從身側響起廷粒,我...
    開封第一講書人閱讀 38,926評論 0 274
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎红且,沒想到半個月后坝茎,有當地人在樹林里發(fā)現了一具尸體,經...
    沈念sama閱讀 45,341評論 1 311
  • 正文 獨居荒郊野嶺守林人離奇死亡暇番,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,563評論 2 333
  • 正文 我和宋清朗相戀三年嗤放,在試婚紗的時候發(fā)現自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片壁酬。...
    茶點故事閱讀 39,731評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡次酌,死狀恐怖,靈堂內的尸體忽然破棺而出舆乔,到底是詐尸還是另有隱情岳服,我是刑警寧澤,帶...
    沈念sama閱讀 35,430評論 5 343
  • 正文 年R本政府宣布希俩,位于F島的核電站吊宋,受9級特大地震影響,放射性物質發(fā)生泄漏颜武。R本人自食惡果不足惜璃搜,卻給世界環(huán)境...
    茶點故事閱讀 41,036評論 3 326
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望鳞上。 院中可真熱鬧这吻,春花似錦、人聲如沸因块。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,676評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽涡上。三九已至趾断,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間吩愧,已是汗流浹背芋酌。 一陣腳步聲響...
    開封第一講書人閱讀 32,829評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留雁佳,地道東北人脐帝。 一個月前我還...
    沈念sama閱讀 47,743評論 2 368
  • 正文 我出身青樓,卻偏偏與公主長得像糖权,于是被迫代替她去往敵國和親堵腹。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 44,629評論 2 354

推薦閱讀更多精彩內容

  • 《R語言入門》的讀書筆記 本書的重點內容及感悟: 第一章 導言 1星澳、R是一個有著統(tǒng)計分析功能及強大作圖功能的軟件系...
    格式化_001閱讀 12,590評論 0 9
  • R語言簡介 R語言是基于S語言的一種開源實現疚顷。S語言是貝爾實驗室最早開發(fā)的一種用于統(tǒng)計的工具,后來成為商業(yè)的S-P...
    Jtag特工閱讀 3,530評論 1 12
  • 最近在復習python的科學計算禁偎,突然心血來潮腿堤,想看看R的數據處理和python的區(qū)別在哪,所以就有了這篇文章如暖。 ...
    若與閱讀 2,096評論 1 24
  • Step1:下載和安裝R Windows和OS X用戶可以從CRAN(Comprehensive R Archiv...
    胡阿白閱讀 2,080評論 0 3
  • 鄒豪zouhao閱讀 69評論 0 0