R--基础知识总结

news2024/11/26 16:32:32

R程序包的安装和加载

install.packageS(''TSA'')
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}

y<-numeric(lenth(x))
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循环语句

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

2.while循环语句

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

3.repeat循环语句

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

函数编写

1.二分法

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

x^{3}-x-1=0

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

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

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

2.Newton法解非线性方程

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

x^{3}-x-1=0

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

newton<-function(f,eplison,x0,iter_max){
    x=x0
    iter=0
    dx=D(f,'x')
    while (iter<=iter_max){
        ans=x-eval(f)/eval(dx)
        if (abs(x-ans)<eplison){
        break
        }
        else{
            x=ans
    }
    iter=iter+1
    }
    list(x,iter)
}
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}

Newtons<-function(fun,x,ep=1e-5,it_max=100){
    index<-0;k<-1
    while (k<=it_max){
        x1<-x;obj<-fun(x);
        x<-x-solve(obj$J,obj$f);
        norm<-sqrt((x-x1) %*% (x-x1))
        if (norm<ep){
        index<-1;break
        }
        k<-k+1
    }
    obj<-fun(x);
    list(root=x,it=k,index=index,FunVal=obj$f)
}

funs<-function(x){
    f<-c(x[1]^2+x[2]^2-5,(x[1]+1)*x[2]-(3*x[1]+1))
    J<-matrix(c(2*x[1],2*x[2],x[2]-3,x[1]+1),nrow=2,byrow=T)
    list(f=f,J=J)
}
Newtons(funs,c(0,1))

输出结果为:

$root
[1] 1 2

$it
[1] 6

$index
[1] 1

$FunVal
[1] 1.598721e-14 6.217249e-15

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1014681.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

golang iris框架 + linux后端运行

go mod init myappgo get github.com/kataras/iris/v12latestpackage mainimport "github.com/kataras/iris/v12"func main(){app : iris.New()app.Listen(":port") }打包应用 go build main.go开启服务 #nohup ./程序名称 nohup ./main关闭后台 #ps -e…

国际版阿里云/腾讯云免费:阿里云产品-弹性核算简介(依据官网转载)

阿里云产品-弹性核算简介(依据官网转载) 云服务器ECS&#xff08;Elastic Compute Service&#xff09;是阿里云供给的功能杰出、安稳牢靠、弹性扩展的IaaS&#xff08;Infrastructure as a Service&#xff09;等级云核算服务。 实例&#xff1a;等同于一台虚拟服务器&#xf…

vscode如何设置文件折叠

随着项目的不断迭代开发&#xff0c;复杂度越来越高&#xff0c;配置文件越来越多&#xff0c;导致vscode左侧文件列表展示非常不直观&#xff0c;幸好可以通过文件折叠来简化展示效果&#xff0c;把同类相关的文件折叠在一块展示&#xff0c;方便查看配置文件。配置好后的效果…

C++之vector迭代器函数begin、end、rebegin、rend、cbegin、cend、crbegin、crend总结(二百零一)

简介&#xff1a; CSDN博客专家&#xff0c;专注Android/Linux系统&#xff0c;分享多mic语音方案、音视频、编解码等技术&#xff0c;与大家一起成长&#xff01; 优质专栏&#xff1a;Audio工程师进阶系列【原创干货持续更新中……】&#x1f680; 人生格言&#xff1a; 人生…

视频监控管理平台/视频汇聚/视频云存储EasyCVR安全检查的相关问题及解决方法3.0

智能视频监控系统/视频云存储/集中存储/视频汇聚平台EasyCVR具备视频融合汇聚能力&#xff0c;作为安防视频监控综合管理平台&#xff0c;它支持多协议接入、多格式视频流分发&#xff0c;视频监控综合管理平台EasyCVR支持海量视频汇聚管理&#xff0c;可应用在多样化的场景上&…

Weblogic SSRF漏洞

Weblogic SSRF漏洞 1.环境搭建 http://10.9.75.198:7001/uddiexplorer/2.漏洞复现 SSRF漏洞存在于http://10.9.75.198:7001/uddiexplorer/SearchPublicRegistries.jsp2.1bp抓包&#xff0c;测试该漏洞。通过测试端口&#xff0c;查看哪个端口能够进行具体得操作 可访问的端…

虚拟机作为master远程控制台式机中的机器人在仿真环境中进行slam地图构建与自主导航

文章目录 前言一、思路流程二、具体步骤1.虚拟机网络配置2.台式机网络配置3.网络测试 三、远程操控SLAM建立地图三、远程操控SLAM导航 前言 虚拟机作为master远程控制台式机中的机器人在仿真环境中进行slam地图构建与自主导航 最近有时间一直在搞Ubuntu虚拟机与台式机的通讯&…

承载22倍于自身重量前行,垂直跳跃59厘米,用爆炸驱动的昆虫机器人来了

这款机器人由来自康奈尔大学的研究者研发&#xff0c;该机器人长 29 毫米&#xff0c;重量仅为 1.6 克&#xff0c;可以垂直跳跃 59 厘米&#xff0c;并且可以携带 22 倍&#xff08;36 克&#xff09;于自身重量的物品行走。 小小机器人能量大爆发&#xff0c;身体如昆虫一般大…

企业架构LNMP学习笔记46

PHP测试连接代码&#xff1a; php代码测试使用memcached&#xff1a; 示例代码&#xff1a; <?php //实例化类 $mem new memcached(); //调用连接memcached方法 注意连接地址和端口号 $mem->addServer(192.168.17.114,11211); //存数据 var_dump($mem->set(name,l…

文件批量重命名:自定义命名与扩展名更改

你是否曾经需要批量更改文件名称和类型&#xff1f;如果你有大量文件需要重命名和更改类型&#xff0c;那么今天我们将向你介绍一种简单的方法来轻松批量更改文件名称和类型。无论你是需要将一个文件夹中的所有图片改为另一种格式&#xff0c;还是需要将一个文件夹中的所有文档…

无涯教程-JavaScript - IFERROR函数

描述 如果公式的计算输出为错误,则IFERROR函数将返回您指定的值。否则,返回公式的输出。使用IFERROR函数可以捕获和处理公式中的错误。 语法 IFERROR (value, value_if_error) 争论 Argument描述Required/OptionalvalueThe argument that is checked for an error.Required…

IDEA 打包MapReduce程序到集群运行的两种方式以及XShell和Xftp过期的解决

参考博客 【MapReduce打包成jar上传到集群运行】http://t.csdn.cn/2gK1d 【Xshell7/Xftp7 解决强制更新问题】http://t.csdn.cn/rxiBG IDEA打包MapReduce程序&#xff08;方式一&#xff09;【轻量级打包】 这里的打包是打包整个项目&#xff0c;后期等学会怎么打包单个指定…

Alfred v5.1.2(Mac应用快速启动)

Mac效率办公软件哪个好&#xff1f;Alfred是一款Mac电脑上的快速启动和工作流自动化工具&#xff0c;它可以帮助用户快速访问文件、应用程序、web搜索和系统工具&#xff0c;提高工作效率。以下是Alfred的特点&#xff1a; 快速启动&#xff1a;用户可以通过Alfred快速启动应用…

[k8s] 常见yml配置和详细解释

在 Kubernetes (K8s) 中&#xff0c;常见的 YAML 文件配置包括&#xff1a; 文章目录 PodDeploymentServiceIngressConfigMapSecretVolume访问模式 StatefulSetDaemonSetJob容器的重启策略 ConJob Pod apiVersion: v1 kind: Pod metadata:name: my-pod # Pod 的名称labels:ap…

使用命令行创建一个vue项目卡住不动如何解决

问题 在使用命令去创建一个vue项目&#xff0c; 出现下面卡住不动的一个状态。 解决方案一 首先先ctrlc停止进入创建好的项目文件手动输入npm install 、npm run dev如果npm run dev 的时候 出现 ‘vite’ 相关的错误查看node版本是否是最新的稳定版本node -v查看安装源是否…

国家网络安全周 | 天空卫士CEO刘霖在《中国网信》杂志发表署名文章

由中共中央网络安全和信息化委员会办公室、中华人民共和国国家互联网信息办公室主管的《中国网信》2023年第9期总第21期&#xff0c;在2023年国家网络安全宣传周开幕式时同期发布。《中国网信》杂志致力于宣传解读中央网络安全和信息化委员会及其办公室的重大决策部署和重点工作…

创建HTTP请求的几种方式

一. HTML表单标签创建 form 的重要参数: action: 构造的 HTTP 请求的 URL 是什么. method: 构造的 HTTP 请求的 方法 是 GET 还是 POST (form 只支持 GET 和 POST). input 的重要参数: type: 表示输入框的类型. text 表示文本, password 表示密码, submit 表示提交按钮. name…

青大数据结构【2013】

关键字&#xff1a; 邻接表空间复杂度、求无向图连通分量&#xff08;BFS、DFS&#xff09;、B树根节点最小关键字、平均查找长度最小的排序、二叉树排序叶子结点次序不变、不同次序建立二叉排序树及中序遍历、直接插入排序特点、强连通分量、邻接矩阵邻接表、折半查找判定树、…

Blender批量修改名称

假如在Blender里按顺序添加了多个mesh&#xff0c;名字后缀按照数字1,2,3…编号&#xff0c;此时又要插入一个新的mesh&#xff0c;那么这个mesh之后的其它mesh名字都要加1&#xff0c;此时该怎么办呢&#xff1f; 比较简单的办法是把新mesh后面的mesh名称一个一个手动加1&…

软件工程知识总结梳理

&#x1f525;&#x1f525;宏夏Coding网站&#xff0c;致力于为编程学习者、互联网求职者提供最需要的内容&#xff01;网站内容包括求职秘籍&#xff0c;葵花宝典&#xff08;学习笔记&#xff09;&#xff0c;资源推荐等内容。在线阅读&#xff1a;https://hongxiac.com&…