R語言數據對象與運算
創新互聯專注為客戶提供全方位的互聯網綜合服務,包含不限于成都做網站、網站建設、當雄網絡推廣、小程序定制開發、當雄網絡營銷、當雄企業策劃、當雄品牌公關、搜索引擎seo、人物專訪、企業宣傳片、企業代運營等,從售前售中售后,我們都將竭誠為您服務,您的肯定,是我們最大的嘉獎;創新互聯為所有大學生創業者提供當雄建站搭建服務,24小時服務熱線:18982081108,官方網址:vcdvsql.cn
R語言數據對象與運算 筆記整理
2.1 數據對象及類型
R語言創建和控制的實體被稱為對象(object)
ls()命令來查看當前系統里的數據對象
R對象的名稱必須以一個英文字母打頭,并由一串大小寫字母、數字或鐘點組成
注意:R區分大小寫
不要用R的內置函數名稱作為數據對象的名稱,如c、length等
2.2 數據對象類型
R語言的對象包括
數值型(numeric):實數, 可寫成整數(integers)、小數(decimal fractions)、科學記數(scientific notation)
邏輯型(logical):T(true)或F(FALSE)
字符型(character):夾在" "或之間
復數型(complex):形如a+bi
原味型(raw):以二進制形式保存數據
缺省型(missing value):有些統計資料是不完整的,當一個元素或值在統計的時候是“不可得到(not available)”或“缺失值(missing value)”的時候,相關位置可能會被保留并賦予一個特定的NA(not available)值,任何NA的運算結果都是NA。
辨別和轉換數據對象類型的函數:
辨別 轉換
character is.character() as,character()
complex
double
integer
logical
NA
numeric
2.3 數據對象構造
R語言里的數據對象主要有六種構造:向量(vector)、矩陣(matrix)、數組(array)、列表(list)、數據框(data frames)、因子(factor)
2.3.1 向量(vector)是由有相同基本類型元素組成的序列,相當于一維數組
5個數值組成的向量x,這是一個用函數c()完成的賦值語句,這里c()可以有任意多個參數,而它輸出的值則是一個把這些參數首尾相連形成的一個向量
R的賦值符號除了“-”外,還有"-""="
例如:
c(1,3,5,7,9) - y
y
[1] 2 5 8 3
z = c(1,3,5,7,9)
z
[1] 1 3 5 7 9
assign()函數對向量進行賦值
length():可返回向量的長度
mode()可返回向量的數據類型
正則序列 用 “:”符號,可產生有規律的正則序列(: 的運算級別最高)
函數seq()產生有規律的各種序列
seq(from,to ,by) from 給序列的起始值,to表示序列的終止值,by表示步長(by 省略時,表示步長值為1)
seq(1,10,2)
[1] 1 3 5 7 9
seq(1,10)
[1] 1 2 3 4 5 6 7 8 9 10
有時關注的是數列的長度,利用句法:seq(下界,by=,length=)
seq(1,by=2,length=10)
[1] 1 3 5 7 9 11 13 15 17 19
rep(x,times,……)x表示要重復的對象,times表示重復的次數
rep(c(1,3),4)
[1] 1 3 1 3 1 3 1 3
rep(c(1,3),each=4)
[1] 1 1 1 1 3 3 3 3
對每個元素進行重復;
R中的內置函數:
mean()來示向量的均值
median()求是位數
var()求方差
sd()求標準差
sort()對向量排序
rev()將向量按原方向的反方向排列
rank()給求出向量的秩
prod()求向量連乘積
append()為向量添加元素
對向量運算常見函數表
函數 用途
sum() 求和
max() 求最大值
min() 求最小值
range() 求極差(全矩)
mean() 求均值
median 求中位數
var() 求方差
sd() 求標準差
sort() 排序
rev() 反排序
rank() 求秩
append() 添加
replace() 替換
match() 匹配
pmatch() 部分匹配
all() 判斷所有
any() 判斷部分
prod() 積
2.3.2 矩陣
矩陣(matrix)是將數據用行和列排列的長方形表格,它是二維的數組,其單元必須是相同的數據類型,通常用列來表示不同的變量,用行表示各個對象。
其句法是:
matrix(data=NA,ncol=1,byrow-=FALSE,dimnames=NULL)
data是必須的,其它幾個選擇參數。
nrow表示矩陣的行數
ncol表示矩陣的列數
byrow默認為FALSE,表示矩陣按列排列,如設置為T,表示按行排列;
dimnames可更改矩陣行列名字
diag()函數生成對角矩陣
diag()這個函數比較特別,當數據是向量時則生成對角矩陣,但當數據是矩陣時,則返回對角元素
也可用函數diag()生成單位矩陣
當我們生成了某個矩陣后,若要訪問矩陣的某個元素或某行(列),可以利用形如A[i,j]的形式得到相應的索引矩陣
矩陣可進行相應的加減乘除運算,但運算過程中要注意行數和列數的限制條件
R里A*B并不是表示矩陣相乘,只表示矩陣對應的元素相乘
矩陣相乘應用A%*%B
dim()返回矩陣的行數和列數
nrow()返回矩陣的行數
ncol()返回矩陣的列數
solve()返回矩陣的逆矩陣
對矩陣運算的常見函數
函數 用途
as.matrix() 把非矩陣的轉換成矩陣
is.matrix() 辨別是否矩陣
diag() 返回對角元素或生成對角矩陣
eigen() 求特征值和特征向量
solve() 求逆矩陣
chol() Choleski分解
svd() 奇異值分解
qr() QR分解
det() 求行列式
dim() 返回行列數
t() 矩陣轉置
apply() 對矩陣應用函數
R語言還提供了專門針對矩陣的行或列計算的函數
如 colSUms()對矩陣各列求和 colMeans()求矩陣各列的均值
類似的有 rowSums()rowMeans()
更一般的方法:
apply()函數來對各行各列進行運算
句法是:apply(X,MARGIN,FUN,……)
X表示要處理的數據
MARGIN表示函數作用的范圍
取1表示對行運用函數
取2表示對列運用函數
FUN表示要運用的函數
rbind()、cbind()將兩個或兩個以上的矩陣合并起來
rbind()表示按行合并,cbind()則表示按列合并
2.3.3 數組
數組(array)可以看作是帶有多個下標的類型相同的元素的集合。
數組的生成函數是array(),其句法是
array(data=NA,dim=length(data),dimnames-NULL)
data表示數據,可以為空
dim 表示維數
dimnames可以更改數組難度的名稱
2.3.4 列表
向量、矩陣和的單元必須是同一類型的數據,若一個數據對象需要含有不同的數據類型,可采用列表(list)這種數據對象的形式。
列表是一個對象的有序集合構成的對象,列表中包含的對象又稱為它的分量(components),分量可以是不同的模式或(和)類型
語法式為:list (變量1=分量1,變量2=分量2,……)
若要訪問列表的某一成分,可以用LST[[1]],LST[[2]]的形式訪問
因分量可以被命名,故可以在列表名稱后加$符號,再寫上成分名稱來訪問列表分量
函數length()、mode()、names()可以分別返回列表的長度(分量的數目)、數據類型、列表里成分的名字
2.3.5 數據框
數據框(data frame)是一種矩陣形式的數據,但數據框中各列可以是不同類型的數據。數據框每列是一個變量,每行是一個觀測 。
對可能列入數據框中的列表有如下的一些限制:
1.分量必須是向量(數值,字符,邏輯),因子,數值矩陣,列表或者其他數據框。
2.矩陣,列表和數據框為新的數據框提供了盡可能多的變量,因為它們各自擁有列、元素或者變量。
3.數值向量、邏輯值、因子保持原有格式,而字符向量會被強制轉換成因子并且它的水平就是向量中出現的獨立值。
4.在數據框中以變量形式出現的向量結構必須長度一致,矩陣結構必須有一樣的行數。
R中用函數data.frame()生成數據框,其句法是:data.frame(data1,data2,……)
數據框的列名默認為變量名,也可對列名進行重新命名
也可以對數據框的行名進行修改
2.3.6 因子和有序因子
分類型數據經常要把數據分成不同的水平或因子(factor)
生成因子的命令是factor(),其句法是:factor(data,levels,labels,……)
其中data表示數據
levels是因子水平向量
labels是因子的標簽向量
levels,labels是備選項,可以不選
若上面的每個因子并不表示因子的大小,要表達因子之間有大小順序(考慮因子之間的順序),則可以用 ordered()函數產生
2.4 數據的錄入及編輯
c函數:c函數是把各個值聯成一個向量或列表,可以形成數值型向量、字符型向量或其它類型向量
scan函數:功能類似于c函數,實際上是一種鍵盤輸入數據函數。當輸入scan(),然后按回車鍵,這時將等待輸入數據,數據之間只要空格分開即可(c函數要用逗號分開)。輸入完數據,再按回車鍵,這時數據錄入完畢。
scan函數還可以讀入外部文本文件,若現有一個文本文件,data.txt,讀入這個文件的命令是: x=scan(file="dat.txt")
若原文件的數據之間有逗號等分隔符,用scan讀入應該去掉這些分隔符,其命令是: x=scan(file="dat.txt",sep=",")
編輯數據
data.entry命令
xx原先未被定義,現在賦予其一個空值,這時會出現一個電子表格界面,等待輸入數據: data.entry(xx=c(NA))
當電子表格關閉后,數據會自動保存
edit命令用來編輯函數,也可用來編輯數據,但不會自動保存
fix函數與edit類似,但它可以自動保存
從外部文件讀入數據
從文本文件讀取:
s1=read.table("student.txt")
s1
V1 V2 V3
1 class sex score
2 1 女 80
3 1 男 85
4 2 男 92
5 2 女 76
6 3 女 61
7 3 女 95
8 3 男 83
讀入表格數據的命令是:read.table
忽略掉標簽而直接使用默認的行標簽
s2=read.table("student.txt",header=T)
s2
class sex score
1 1 女 80
2 1 男 85
3 2 男 92
4 2 女 76
5 3 女 61
6 3 女 95
7 3 男 83
從網絡讀入數據
url可以從網頁上讀入正確格式的數據,要借助read.table函數
address=
/sample.txt
read.table(file=url(address))
讀入其他格式的數據庫
要讀入其他格式的數據庫,必須先安裝"foreign"模塊,它不屬于R的8個內置模塊,需在使用前安裝。 library(foreign)
SAS:R只能詩篇SAS Transport format(XPORT)文件,需要把普通的SAS數據文件(.ssd和.sas7bdat)轉換成Transport format(XPORT)文件,再用命令:read.xport()
SPSS數據庫:read.spss()可讀入SPSS數據文件
Epi info數據庫:
要給數據集一個名字,則是;read.epiinfo("文件名.rec")-名稱
Stata數據庫:
R可讀入Stata5,6,7的數據庫
讀入數據文件后,使用數據集名$變量名,即可使用各個變量
read.dta(“文件名.dta”)
讀入數據文件后,使用數據集名$變量名,即可使用各個變量。
mean(data$age)
便是計算數據集 data中的變量age的均數。
2.5 函數、循環與條件表達式
2.5.1 編寫函數
句法是:
函數名 = function (參數1,參數2…)
{
函數體
函數返回值
}
對于這類只有一個算術式的簡單函數,也要不要{}
mean(data$age)
便是計算數據集 data中的變量age的均數。
若不使用圓括號,直接輸入函數名,按回車鍵將顯示函數的定義式:
單參數:使函數個性化,可使用單參數,函數將會根據參數的不同,返回值不同
welcome.sb = function(names) print(paste("welcome",names,"to
use R"))
welcome.sb("Mr fang")
[1] "welcome Mr fang to use R"
welcome.sb("Mr Wang")
[1] "welcome Mr Wang to use R"
默認參數:即不輸入任何參數
函數的默認參數
welcome.sb=function(names="Mr fang")print(paste("welcome",
names,"to use R"))
welcome.sb()
[1] "welcome Mr fang to use R"
當函數體的表達式超過一個時,要用{}封起來
2.5.2 for循環
for循環的句法是:
for (變量 in取值向量) {
表達式…
}
R軟件不只是一種統計工具,它還是一種語言,就語法形式而言跟S語言非常相識。所以類似與數據庫一樣,在客戶端不是就只能調用一些函數,而是可以用數據庫提供的SQL語言編寫出擁有靈活多變,滿足各種需求的功能。R語言也一樣,可以在客戶端,用S語言編寫程序,傳送到R軟件,R軟件計算完成后將結果在傳回C#。既然需要來回傳送,必然需要中間的橋梁,就像數據庫需要驅動程序一樣,在C#中調用R軟件,需要安裝R(D)COM,R(D)COM是一種DCOM組件,可以注冊到Windows的組件服務中,供程序調用。如果用C#開發Web程序,由于ASP.NET是用ASPNET這個用戶在執行,而這個用戶的權限很低,所以如果要調用R(D)COM的服務的化,需要給ASPNET授予權限。所有具體的操作,使用方法,可以參考:/KB/cs/RtoCSharp.aspx
vector:向量 numeric:數值型向量 logical:邏輯型向量 character;字符型向量 list:列表 data.frame:數據框
c:連接為向量或列表 sequence:等差序列 rep:重復
length:求長度 subset:求子集 seq,from:to, NA:缺失值 NULL:空對象 sort,order,unique,rev:排序 unlist:展平列表 attr,attributes:對象屬性
mode,typeof:對象存儲模式與類型 names:對象的名字屬性
character:字符型向量 nchar:字符數 substr:取子串 format,formatC:把對象用格式轉換為字符串 paste,strsplit:連接或拆分
charmatch,pmatch:字符串匹配 grep,sub,gsub:模式匹配與替換
complex,Re,Im,Mod,Arg,Conj:復數函數
factor:因子 codes:因子的編碼 levels:因子的各水平的名字 nlevels:因子的水平個數 cut:把數值型對象分區間轉換為因子
table:交叉頻數表 split:按因子分組 aggregate:計算各數據子集的概括統計量 tapply:對“不規則”數組應用函數
+, -, *, /, ^, %%, %/%:四則運算 ceiling,floor,round,signif,trunc,zapsmall:舍入 max,min,pmax,pmin:最大最小值
range:最大值和最小值 sum,prod:向量元素和,積 cumsum,cumprod,cummax,cummin:累加、累乘 sort:排序 approx和approx fun:插值 diff:差分 sign:符號函數
abs,sqrt:絕對值,平方根 log, exp, log10, log2:對數與指數函數 sin,cos,tan,asin,acos,atan,atan2:三角函數
sinh,cosh,tanh,asinh,acosh,atanh:雙曲函數
beta,lbeta,gamma,lgamma,digamma,trigamma,tetragamma,pentagamma,choose ,lchoose:與貝塔函數、伽瑪函數、組合數有關的特殊函數
fft,mvfft,convolve:富利葉變換及卷積 polyroot:多項式求根 poly:正交多項式 spline,splinefun:樣條差值
besselI,besselK,besselJ,besselY,gammaCody:Bessel函數 deriv:簡單表達式的符號微分或算法微分
array:建立數組 matrix:生成矩陣 data.matrix:把數據框轉換為數值型矩陣 lower.tri:矩陣的下三角部分 mat.or.vec:生成矩陣或向量 t:矩陣轉置
cbind:把列合并為矩陣 rbind:把行合并為矩陣 diag:矩陣對角元素向量或生成對角矩陣 aperm:數組轉置 nrow, ncol:計算數組的行數和列數 dim:對象的維向量
dimnames:對象的維名 row/colnames:行名或列名 %*%:矩陣乘法 crossprod:矩陣交叉乘積(內積) outer:數組外積 kronecker:數組的Kronecker積
apply:對數組的某些維應用函數 tapply:對“不規則”數組應用函數 sweep:計算數組的概括統計量 aggregate:計算數據子集的概括統計量 scale:矩陣標準化
matplot:對矩陣各列繪圖 cor:相關陣或協差陣 Contrast:對照矩陣 row:矩陣的行下標集 col:求列下標集
solve:解線性方程組或求逆 eigen:矩陣的特征值分解 svd:矩陣的奇異值分解 backsolve:解上三角或下三角方程組 chol:Choleski分解
qr:矩陣的QR分解 chol2inv:由Choleski分解求逆
,,=,=,==,!=:比較運算符 !,,,|,||,xor():邏輯運算符 logical:生成邏輯向量 all,any:邏輯向量都為真或存在真
ifelse():二者擇一 match,%in%:查找 unique:找出互不相同的元素 which:找到真值下標集合 duplicated:找到重復元素
optimize,uniroot,polyroot:一維優化與求根
if,else,ifelse,switch:分支 for,while,repeat,break,next:循環 apply,lapply,sapply,tapply,sweep:替代循環的函數。
function:函數定義 source:調用文件 call:函數調用 .C,.Fortran:調用C或者Fortran子程序的動態鏈接庫。 Recall:遞歸調用
browser,debug,trace,traceback:程序調試 options:指定系統參數 missing:判斷虛參是否有對應實參 nargs:參數個數 stop:終止函數執行
on.exit:指定退出時執行 eval,expression:表達式計算 system.time:表達式計算計時 invisible:使變量不顯示 menu:選擇菜單(字符列表菜單)
其它與函數有關的還有:delay,delete.response,deparse,do.call,dput,environment ,,formals,format.info,interactive,
is.finite,is.function,is.language,is.recursive ,match.arg,match.call,match.fun,model.extract,name,parse,substitute,sys.parent ,warning,machine
cat,print:顯示對象 sink:輸出轉向到指定文件 dump,save,dput,write:輸出對象 scan,read.table,load,dget:讀入
ls,objects:顯示對象列表 rm, remove:刪除對象 q,quit:退出系統 .First,.Last:初始運行函數與退出運行函數。
options:系統選項 ?,help,help.start,apropos:幫助功能 data:列出數據集分析
每一種分布有四個函數:d――density(密度函數),p――分布函數,q――分位數函數,r――隨機數函數。
比如,正態分布的這四個函數為dnorm,pnorm,qnorm,rnorm。下面我們列出各分布后綴,前面加前綴d、p、q或r就構成函數名:
norm:正態,t:t分布,f:F分布,chisq:卡方(包括非中心) unif:均勻,exp:指數,weibull:威布爾,gamma:伽瑪,beta:貝塔
lnorm:對數正態,logis:邏輯分布,cauchy:柯西, binom:二項分布,geom:幾何分布,hyper:超幾何,nbinom:負二項,pois:泊松 signrank:符號秩,
wilcox:秩和,tukey:學生化極差
sum, mean, var, sd, min, max, range, median, IQR(四分位間距)等為統計量,sort,order,rank與排序有關,其它還有ave,fivenum,mad,quantile,stem等。
R中已實現的有chisq.test,prop.test,t.test。
cor,cov.wt,var:協方差陣及相關陣計算 biplot,biplot.princomp:多元數據biplot圖 cancor:典則相關 princomp:主成分分析 hclust:譜系聚類
kmeans:k-均值聚類 cmdscale:經典多維標度 其它有dist,mahalanobis,cov.rob。
ts:時間序列對象 diff:計算差分 time:時間序列的采樣時間 window:時間窗
lm,glm,aov:線性模型、廣義線性模型、方差
文章題目:r語言里c函數用法 r語言中函數
文章分享:http://vcdvsql.cn/article32/dooogsc.html
成都網站建設公司_創新互聯,為您提供App開發、網站排名、響應式網站、網站設計、網頁設計公司、ChatGPT
聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯