R語言基本操作函數(1)變量的基本操作


1.變量變換

#轉換變量類型;使用如下命令可得到全部列表,methods(as)
as.array(x)
as.data.frame(x)
as.numeric(x)
as.logical(x)
as.complex(x)
as.character(x)

factor()#:將一個向量轉化為一個因子

2.變量信息

#檢驗變量的類型;使用如下命令得到全部列表,methods(is)
is.na(x)
is.null(x)
is.array(x)
is.data.frame(x)
is.numeric(x)
is.complex(x)
is.character (x)


length(x)#:x中元素的個數
dim(x)#:查看變量的維數;重新設置的維數,例如dim(x)=c(3,2)
dimnames(x)#:重新設置對象的名稱
nrow(x)#:行的個數
ncol(x)#:列的個數
class(x)#:得到或設置x的類;class(x)<-c(3,2)
unclass(x)#刪除x的類
attr(x,which)#:得到或設置x的屬性which
attributes(obj)#:得到或設置obj的屬性列表

#:對數據框數據進行表格形式的編輯
fix
edit 

3.數據選取和操作

which.max(x) #:返回x中最大元素的指標
which.min(x) #:返回x中最小元素的指標
rev(x) #:翻轉x中所有的元素
sort(x) #:升序排列x中的元素;降序排列使用:rev(sort(x))
cut(x,breaks) #:將x分割成為幾段(或因子);breaks為段數或分割點向量
match(x,y) #:返回一個和x長度相同且和y中元素相等的向量不等則返回NA
which(x==a) #:如果比較操作為真(TRUE),返回向量x的指針
choose(n,k) #:組合數的計算
na.omit(x) #:去除缺失值(NA)(去除相關行如果x為矩陣或數據框)
na.fail(x) #:返回錯誤信息,如果x包含至少一個NA
unique(x) #:如果x為向量或數據框,返回唯一值
table(x) #:返回一個由x不同值個數組成的表格(通常用於整數或因子),即頻數表
subset(x,...) #:根據條件(...選取x中元素,如x$V1<10);如果x為數據框,選項select使用負號給出保留 或去除的變量 subset(x, subset, select, drop = FALSE, ...)
sample(x,size) #:不放回的隨即在向量x中抽取size個元素,選項replace=TRUE允許放回抽取
prop.table(x,margin=) #:根據margin使用分數表示表格,wumargin時,所有元素和為1

* R數據的創建與索引
** 向量的操作
*** 向量的創建
**** c(...)
為concatenate的縮寫;
常見的將一系列參數轉化為向量的函數,通過recursive=TRUE降序排列列表並組合所有的元素為向量
*** from:to產生一個序列
":"有較高的優先級;1:4+1得到"2,3,4,5"
*** seq() 產生一個向量序列

seq(from = 1, to = 1, by = ((to - from)/(length.out - 1)),length.out = NULL, along.with = NULL, ...)

        其中length.out可簡寫為len。
*** rep() 重復一個對象
        rep(x,times):x是要重復的對象(例如向量c(1,2,3)),times為對象中每個元素重復的次數(如times=c(9,7,3)就是將x向量的1重復9次,2重復7次,3重復3次)。
        除了上述主要的用法之外,還有一種特殊的用法:rep(x,times)重復x times次;使用each=來重復x元素each次;rep(c(1,2,3),2)得到1 2 3 1 2 3;rep(c(1,2,3),each=2)得到1 1 2 2 3 3。
*** 利用向量的索引實現定義分段函數
        利用改變部分元素值的技術與邏輯值下標結合,可以定義向量的分段函數,例如,要定義
         
可以用如下的語句去實現:

x = c(-2.3,4,-5,7);
y = numeric(length(x));
y[x<0] = 1 - x[x<0];
y[x>0] = 1 - x[x>0];
y
[1] 3.3 -3.0 6.0 -6.0

4.1.數組(包含矩陣、向量)創建

c(...)
常見的將一系列參數轉化為向量的函數,通過recursive=TRUE降序排列列表並組合所有的元素為向量
from:to產生一個序列
":"有較高的優先級;1:4+1得到"2,3,4,5"
seq() 產生一個向量序列

seq(from = 1, to = 1, by = ((to - from)/(length.out - 1)),length.out = NULL, along.with = NULL, ...)

        其中length.out可簡寫為len。
rep() 重復一個對象
        rep(x,times):x是要重復的對象(例如向量c(1,2,3)),times為對象中每個元素重復的次數(如times=c(9,7,3)就是將x向量的1重復9次,2重復7次,3重復3次)。
        除了上述主要的用法之外,還有一種特殊的用法:rep(x,times)重復x times次;使用each=來重復x元素each次;rep(c(1,2,3),2)得到1 2 3 1 2 3;rep(c(1,2,3),each=2)得到1 1 2 2 3 3。
matrix(...)
創立矩陣 matrix(data = NA, nrow = 1, ncol = 1, byrow = FALSE,dimnames = NULL)
array(x,dim=...)
產生由x組成的數組;使用類似dim=c(3,4,2)指定維數;如果x長度不夠,則x自動循環
data.frame(...)
創建數據框,變量可能被命名或未被命名

data.frame(v=1:4,ch=c("a","b","c","d"),n=10);

相對短的向量會被填充到最大向量長度。
注意數據框中各個屬性的元素個數必須相同
list(...)
創建一個由變量組成的列表,變量可能被命名;

list(a=c(1,2),b="hi",c=3i)
factor(x,levels=) #把向量x編碼稱為因子 
factor(x = character(), levels, labels = levels,exclude = NA, ordered = is.ordered(x))
gl() #產生因子變量
gl(n,k,lenth=n*k,labels=)

通過指定水平方式產生水平因子;k為水平的個數,n為重復的次數
rbind() cbind()
        rbind(...)以行的形式組合矩陣,數據框,或其它
        cbind(...)以列的方式組合,其他同rbind()

數據切割和分離
        向量指標
                x[n]:第n個元素
                x[-n]:除了第n個元素的x
                x[1:n]:前n個元素
                x[-(1:n)]:第n+1至最后的元素
                x[c(1,4,2)]:指定元素
                x["name"]:名為"name"的元素
                x[x>3]:所有大於3的元素
                x[x>3 & x<5]:區間(3,5)的元素
                x[x%in%c("a","and","the")]:給定組中的元素
        列表指標
                x[n]:列表顯示元素n
                x[n]:列表的第n個元素
                x["name"]:名為"name"的元素
                x$name :同上
        矩陣指標
                x[i,j]:下表為(i,j)的元素
                x[i,]:第i行
                x[,j]:第j列
                x[,c(1,3)]:第1和3列
                x["name",]:名為"name"的行
                x$name :同上
        數據框指標
                x["name"]:列明為"name"的列
                x$name :同上

4.2.R數學函數

4.2.1.泛用函數apply:
        描述:讓不同的函數作用數組array不同的邊。
        用法:apply(X, MARGIN, FUN, ...)
        參數描述:
                X為一數組array,當然包括矩陣。
                MARGIN:為一向量,它指定函數要作用的下標。例如對一個矩陣來說,1代表行,2代表列,而c(1,2)代表行和列。
                FUN作用於數組array上的函數。此函數可以是自己編寫的。
 
        注意:
                當X時一個data.frame時,而不是array時,函數apply就會強制性的通過as.matrix或as.array將其轉化為maxtrix或array。
        例子:

## Compute row and column sums for a matrix:
x <- cbind(x1 = 3, x2 = c(4:1, 2:5))
col.sums <- apply(x, 2, sum)
row.sums <- apply(x, 1, sum)

4.2.2.基本符號:
        + :加
        - :減
        * :乘
        / :除
        ^ :次方
        %% 表示求余數
        %/% 表示整除

4.2.3.三角函數與其他基本數學函數

        sin,
        cos,
        tan,
        asin,
        atan,
        atan2,
        log,
        log10,
        exp,
max(x):
        當x為一向量時,返回x中最大的元素。
        當x為矩陣時,返回矩陣中所有元素的最大值。當要返回矩陣x每行或每列的最大值時,可以使用apply函數(apply(X, MARGIN, FUN, ...)),其中MARGIN表示要作用的方式,1代表行,2代表列,c(1,2)代表行和列;例如apply(data,MARGIN=1,max)
        當x為data.frame時,1仍然代表行,2仍然代表列。
        當x為數組array時,1仍然代表行,2仍然代表列,其它更高維數用相應的編號數字來表示,如3就可以代表array的頁。
        其它詳細情況參考apply函數

min(x)#:返回x中最小的元素,同max
rev(x)# 翻轉x中的所有元素
sort(x)# 升序排列x中的元素;降序排列使用rev(sort(x)),要得到排列的小標用order()
choose(n,k)# 組合數計算
which()# 返回滿足條件的下表
sample(x,size)# 不放回的隨機在向量x中抽取size個元素選項,replace+TRUE允許放回抽樣
rank()#:計算向量的秩
range(x)#:返回c(min(x),max(x))
sum(x)#:x中各元素的加和
diff(x)#:向量x的差分
prod(x)#:x中元素的連乘積
mean(x)#:x的均值
median(x)#:x的中位數
quantile(x,probs=)#:滿足給定概率的樣本分位數(默認為0,0.25,0.75,1)
weight.mean(x,w)#:加權平均,w即為weight,即權值。
rank(x)#:x中元素的秩
var(x)#:向量x的樣本方差;如果x是矩陣或數據框,協方差矩陣將被計算 
cor(x)#:如果x是矩陣或數據框,相關系數矩陣將被計算
sd(x)#:x的標准差;sd(x)=sqrt(var(x))
var(x,y) or cov(x,y)#:x和y間的協方差;如果x,y為矩陣或數據框,返回x和y各列的協方差
cor(x,y)#:x和y的線性相關系數;或者相關矩陣,如果x和y為矩陣或者數據框
round(x,n)#:x的約數,精確到n位
log(x,base)#:計算x以base為基的對數,默認基為exp(1)
scale(x)#:如果x是一個矩陣,則中心化和標准化數據;若只標准化數據,則使用選項center=FALSE,若只 中心化使用scale=FALSE(默認center=TRUE, scale=TRUE)
pmin(x,y,...)#:x[i],y[i]相比較小者,組成新的向量
pmax(x,y,...)#:x[i],y[i]相比較大者,組成新的向量
Re(x)#:復數的實部
Im(x)#:復數的虛部
abs(x)#:絕對值
Arg(x)#:復數角度(in radians)
Conj(x)#:共軛復數
fft(x)#:數組x的快速傅里葉變換
mvfft(x)#:矩陣x的每一列的傅里葉變換
factorial()#:計算n!
cumsum()#:cumulative sums
cumprod()#:cumulative products
D(expression(exp(x^2)),"x")# :求導
integrate(function(x) x^2,0,1)#:積分

注意:大多數數學函數使用邏輯參數na.rm=FALSE來指定是否移除缺失值(NA)

4.3.R字符操作

paste(...)#:轉化為字符后連接向量;seq=為分割界限(一個空格為默認);選擇collapse=可以分 割"collapse"結果
substr(x,start,stop)#:提取字符向量的子字段;同樣可以賦值,使用substr(x,start,stop)<-value
strsplit(x,split)#:在split的位置分割x,例如:
        x<-strsplit("An R matrix corresponds to the mathematical concept"," ");
length(x[1])#; #注意:對象被存放在列表x的第一項中,可以用x[1]提取
grep(pattern,x)#:搜索x中滿足pattern條件;參見?regex
gsub(pattern,replacement,x)#:替換滿足正則表達式的字段,sub()類似,但只替換第一個出現的字段
tolower(x)#:轉化為lowercase
toupper(x)#:轉化為uppercase
match(x,table)#:table中匹配x元素位置組成的向量
x%in%table#:table中匹配x元素位置組成的向量,返回值為邏輯值
pmatch(x,table)#:table中部分匹配x元素
nchar(x)#:字符的個數

  

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM