• R--基础知识总结


    R程序包的安装和加载

    1. install.packageS(''TSA'')
    2. library(''TSA'')

    R向量 (vector)

    数值向量

    1.赋值

    • x<-c(1,2,3,4)
    • assign('' x'',c(1,2,3,4))
    • x=c(1,2,3,4)
    • x<-2*1:15                      % x=(2,4,...,30) 等差运算优先于乘法运算
    • seq(from=value1,to=value2,by=value3)  
    • seq(length=value2,from=value1,by=value3)  
    • rep(x,times=3)
    • rep(x,each=2)
    • rep(x,1:3)

    2.运算

    • %/% 表示商的整数部分,%%表示余数
    • 复数开方时应输入sqrt(-2+0i)

    3.函数

    • which.min(x)    %找位置
    • cumsum(x)      %累积求和
    • rev(x)               %求向量的逆序
    • sd(x)                %求向量的标准差
    • order(x,decreasing=TRUE)              %降序给出其排序位置
    • union(X,Y)                                        %并集
    • intersect(X,Y)                                    %交集
    • unique(X)                                           %除去V中重复元素的集合
    • setdiff(X,Y)                                         %表示数集X和Y的差集
    • c%in%Y                                              %检验c是否为为集合中的元素
    • choose(n,k)                                         %从含有n个元素的集合中选取含有k个元素的子集的数目
    • setequalX,Y)                                       %检验集合X和Y是否相等 

    逻辑向量

    • all()                                                             %判断一个逻辑向量是否全部为真
    • any()                                                           %判断一个逻辑向量是否有真的函数

    缺失数据

    • is.na()                                                                %检验缺失数据
    • z[is.na(z)]<-0                                                     %将缺失数据改为0 
    • is.finite()                                                             %检测是否有限

    元素访问与读取

    • X[V]表示取出所有V为真值的元素
    • Z[is.na(Z)]<-0                                                           %将向量中缺失数据赋值为0
    • V[-c()]                                                                       %表示扣除相应元素
    • ages<-c()
    • names()

    y=\begin{cases} & \text{1-x } ,x<0\\ & \text{1+x} ,x\geqslant 0 \end{cases}

    1. y<-numeric(lenth(x))
    2. y[x<0]<-1-x[x<0];y[x>=0]<-1+x[x>=0]

    R数组与矩阵 (array  matrix)

    数组与矩阵的正成

    定义数组

    维数向量(dim属性)   默认按列排放

    构造多维数组

    array(data=NA,dim=length(data),dimnames=NULL)

    构造矩阵

    matrix(data=NA,nrow=1,ncol=1,byrow=F,dimnames=NULL)    byrow=T数据按行放置

    访问

    a[, ,]或a[ ]                                              % 都表示整个数组

    运算

    数组运算

     维数不一样的数组也可以进行四则运算,一般是将短向量循环使用

    矩阵运算

    • t(A)                                                        %转置
    • det()                                                    %求方阵行列式
    • X%*%Y                                                 %X和Y的内积,先相乘后相加
    • crossprod(X,Y)                                      %X和Y的内积
    • X%°%                                                    %X和Y的外积
    • ourter(X,Y)                                             %求X和Y的外积
    • A%*%B                                                  %通常意义下矩阵的乘积
    • solve(A,b)                                              %解线性方程组AX=b
    • solve(A)                                                 %求矩阵的逆

    函数  

    • cbind()                                                          %把自变量横向按列拼成一个大矩阵
    • as.vector(A)                                                  %将矩阵转化为向量
    • aperm(A,C(2,3,1))                                         %将A的第二维移到了第一维
    • apply(A,1,sum)                                              %按行,求和

    R的对象与属性

    内在属性

    mode(类型)length(长度)

    类型共有四种:数值型(numeric)、字符型(character)、逻辑型(logical)、负数型(complex)

    R列表与数据框

    列表

    • Lst[[  ]]                                                                % (每次只能引用一个元素)
    • Lst $ name                                                         % 引用格式:列表名+元素名
    • Lst $ income                                                      % 增加一个元素
    • Lst $ income<-NULL                                          % 删除一个元素

    数据框

    • data.frame()                                                                % 各自变量变成数据框的成分/生成
    • as.data.frame()                                                           % 强制转成数据框
    • df[ ]                                                                              % 数据框的引用
    • names()                                                                       % 只能用于数据框的变量名
    • roenames()                                                                  % 属性定义行名
    • attach(df)                                                                      % 数据框数据的调用(列表也可以)
    • detach()                                                                        %取消连接
    • edit()                                                                              %对数据进行修改或编辑

    R 控制流及函数编写

    分支语句

    1.if/else语句

    2.switch语句

    循环语句

    1.for循环语句

    1. # 构造一个4阶的Hilbert矩阵
    2. n<-4;x<-array(0,dim=c(n,n))
    3. for (i in 1:n){
    4. for(j in 1:n){
    5. x[i,j]<-1/(i+j+1)
    6. }
    7. }
    8. x

    2.while循环语句

    1. # 计算1000以内的Fibonacci数
    2. f<-1;f[2]<-1;i<-1
    3. while (f[i]+f[i+1]<1000){
    4. f[i+2]<-f[i]+f[i+1]
    5. i<-i+1
    6. }
    7. f

    3.repeat循环语句

    1. f<-1;f[2]<-1;i<-1
    2. repeat{
    3. f[i+2]<-f[i]+f[i+1]
    4. i<-i+1
    5. if ((f[i]+f[i+1]>=1000)) break
    6. }

    函数编写

    1.二分法

    例:编写一个用二分法求解非线性方程根的函数,并求方程

    x^{3}-x-1=0

    在区间[1,2]上的根,精度要求\varepsilon =10^{-6}

    解:二分法计算过程如下:取中点x=\tfrac{a+b}{2},若f(a)与f(b)异号,则取b=x;否则a=x.

    1. fzero<-function(f,a,b,eps=1e-5){
    2. if (f(a)*f(b)>0)
    3. list(fail="finding root is fail!")
    4. else{
    5. repeat{
    6. if (abs(b-a)<eps) break
    7. x<-(a+b)/2
    8. if (f(a)*f(x)<0) b<-x else a<-x
    9. }
    10. list(root=(a+b)/2,fun=f(x))
    11. }
    12. }
    13. f<-function(x) x^3-x-1
    14. fzero(f,1,2)
    1. # 求一元方程根的函数uniroot()
    2. f<-function(x) x^3-x-1
    3. uniroot(f,c(1,2))

    2.Newton法解非线性方程

    例:编写一个用Newton法求解非线性方程根的函数,并求方程

    x^{3}-x-1=0

    精度要求\varepsilon =10^{-6}

    1. newton<-function(f,eplison,x0,iter_max){
    2. x=x0
    3. iter=0
    4. dx=D(f,'x')
    5. while (iter<=iter_max){
    6. ans=x-eval(f)/eval(dx)
    7. if (abs(x-ans)<eplison){
    8. break
    9. }
    10. else{
    11. x=ans
    12. }
    13. iter=iter+1
    14. }
    15. list(x,iter)
    16. }
    17. newton(expression(x^3-x-1),0.000001,1.5,100000) # 取初值=1.5

    3.Newton法解非线性方程组

    例:编写用Newton法求解非线性方程组解的程序,并求方程

    \begin{cases} & \text{} x_{1}^{2}+x_{2}^{2}-5= 0\\ & \text{} (x_{1}+1)x_{2}-(3x_{1}+1)= 0 \end{cases}

    取初始值x^{(0)}=(0,1)^{T},精度要求\varepsilon =10^{-5}

    1. Newtons<-function(fun,x,ep=1e-5,it_max=100){
    2. index<-0;k<-1
    3. while (k<=it_max){
    4. x1<-x;obj<-fun(x);
    5. x<-x-solve(obj$J,obj$f);
    6. norm<-sqrt((x-x1) %*% (x-x1))
    7. if (norm<ep){
    8. index<-1;break
    9. }
    10. k<-k+1
    11. }
    12. obj<-fun(x);
    13. list(root=x,it=k,index=index,FunVal=obj$f)
    14. }
    15. funs<-function(x){
    16. f<-c(x[1]^2+x[2]^2-5,(x[1]+1)*x[2]-(3*x[1]+1))
    17. J<-matrix(c(2*x[1],2*x[2],x[2]-3,x[1]+1),nrow=2,byrow=T)
    18. list(f=f,J=J)
    19. }
    20. Newtons(funs,c(0,1))

    输出结果为:

    $root
    [1] 1 2
    
    $it
    [1] 6
    
    $index
    [1] 1
    
    $FunVal
    [1] 1.598721e-14 6.217249e-15
    
  • 相关阅读:
    python 的configparse 读取ini 文件
    突破编程_C++_设计模式(解释器模式)
    代码规范工具
    mysql中使用聚合函数结果集为空,仍显示size为1,所有元素为Null问题的解决
    飞书项目发布3个月,已签约理想汽车、安克创新等100余家公司
    聊聊volatile作用,原理
    USACO18OPEN Talent Show G
    【Linux】进程优先级(PRI,NI)和进程切换
    Cisco Packet Tracer官网安装配置
    2023-09-22力扣每日一题
  • 原文地址:https://blog.csdn.net/qqgg77/article/details/132826674