R 笔记

一、R准备

1. getwd()  setwd("d:/") 查看设置工作目录

2. install.packages('lme4') 安装包

library() 查看已安装包

old.packages()    update.packages()  包更新

3.ls()  rm(y)  rm(list=ls()) 查看、删除已有变量

4.数据导入导出

library(foreign)

gss <- read.csv("gssdummy.csv")

write.csv(gss,"gssdummy.csv")

 

 

二、R基础

1.数据类型

①integer 整型  ②character 字符型  ③numeric 数值型(double)  ④logical 逻辑型

2.数据结构 https://www.jianshu.com/p/47f15d41029f

向量 c()  e.g. id = c(1, 2, 3, 4, 5)  typeof(id) # "double" 向量内须统一数据类型

                 rev(a)将a反序   id[-2] 删第二个元素   n %in% a 判断n是否在a中

矩阵 matrix()  e.g. x=matrix(c(1:9),ncol=3,nrow=3)   x[1, 2] # 4(一行二列)

                            行列命名 rownames(x)=c("A","B","C")

                            查看维数 dim(x) # 3 3

数组 array()   e.g. xx = array(1:24, c(3, 4, 2))  维度调整dim(xx) = c(2, 5)

因子factor() 有level  e.g. a=factor(c('a','b','a')) #[1] a b a Levels: a b

(实际数据以level索引标识 levels “a”,”b”:1 2 1  ※故typeof(a)返回integer

⑤列表 list() 多个向量的组合(可描述一个表),类似dict  可用lst[[1]],lst$key索引

                            lst <- lst[-4]  lst$name <- NULL均可用于删除

                            lst$new_name<-c(…) 对list新增内容

                            lst <- c(lst,otherlst) 合并list

                            unlist(lst)将list转为命名向量

⑥数据框 data.frame()  规整的二维表,其中每列为factor

3.table()可用于groupby统计 e.g. t=table(a,g)  #ag为等长factor,返回二维透视表

margin.table(t,1) 只看a的level汇总值

prop.table(t)  prop.table(t,1)  查看百分比

4.length() 查长度,mode() typeof() 查数据类型

5.序列

①seq(本质上产生一个向量)

e.g. 1:1000  5:0  seq(from=1,to=5,length=4)  seq(length=10,from=-2,by=.2)

②rep()产生重复序列 e.g. rep('hi',3)  rep(1:2,3)  rep(1:2,each=3)

③gl() generate levels产生重复factor  e.g. gl(3,2)  # [1] 1 1 2 2 3 3   Levels: 1 2 3

gl(2,3,labels=c('f','m'))  # [1] f f f m m m  Levels: f m

  ④rnorm()按正态分布产生随机序列,默认标准正态 e.g. rnorm(4,mean=10,sd=3)

  ⑤rt()按t分布产生序列 e.g. rt(5,df=10)

  ⑥runif(n,min,max) 按均匀分布产生序列

6.索引  数据位置、TF判断可用于筛选e.g. id = c(1, 2, 3, 4, 5)   id[2:5] # 2 3 4 5   

id[c(F,T,F,T,F,T)] # [1] 2 4 NA    id[id>2] # 3 4 5

7.命名向量(相当于dict)

       e.g. pH <- c(area1=4.5,area2=7,mud=7.3,dam=8.2,middle=6.3)

names(c(…))<-c(…)可对向量命名

8.矩阵变换

cbind() 按列合并矩阵  rbind() 按行合并矩阵

矩阵可直接四则运算 e.g. m*3  m1+m2

t(m)转置   solve(m)计算逆   solve(C, b) 计算Cx=b

m1%*%m2矩阵相乘  m1%x%m2计算kronecker积(包含点乘结果) a %o% b 计算外积

特征值、特征向量计算eigen(m)

det(m)计算行列式    diag(m)提取矩阵对角线或产生向量为对角线的矩阵

9.attach() detach() 将数据结构存于内存(可直接调用各种key)

10.apply(x, Margin=1,FUN=…) 对x(array或matrix)按行/列(Margin)应用FUN函数

lapply(x,FUN=…) 对list、向量等应用函数

 

 

三、统计计算

1.回归 lm(y~x1+x2+x3,data= …)

2.相关性矩阵with(data, cor(cbind(x1, x2, x3))) 

协方差用cov()        ※with表示数据环境

3.sample(x,size, replace=TRUE) 可对x抽样,样本规模为size(replace为T时放回抽样)

set.seed(n)在随机过程运行前运行,标记本次随机过程是几号种子,后面若还需要本次随机结果可再set.seed(n)调取

4.range(x)返回x的最小值、最大值

 

 

四、可视化

1.windows() 开启单独窗口用于展示   box() 给图形加框

2.plot(x,y,type=””,xlab=”…”,ylab=”…”,main=”…”) 画图,xy为坐标点,type选图类型,xlab填标签,main填标题,pch选点形状,axes=F删除坐标系  也可以plot(x~y)

※每次plot刷新展示框,但其他函数可叠加

3.lines(x,y) 用于画线   abline(a,b) 画直线,可用于画坐标轴

e.g. abline(h=seq(0, 1, by=0.1), v=seq(0, 1, by=0.1), col="gray")

4.curve(f,a,b) 画曲线      e.g. curve(x*cos(25/x), 0.01, pi)

ab为定义域,n设置曲线上点数,ann=F删除坐标标签

5.boxplot()箱线图  barplot()条状图  hist()直方图  image()热力图

6.pie(x,labels=c(…),col)画饼图  ※命名向量可直接用pie()  e.g. pie(proportion)

palette()  rainbow(n)  grey(x)  head(colors(), n)可获取一系列颜色

7.par(mfrow=c(x,y)) 将绘图区分为x行y列个区,按行依次绘制

  layout(matrix)将绘图区分区,并按matrix中数字组合

8.text(x,y,c(“…”))在相应坐标显示文字

9.arrow(x0,y0,x1,y1,code= )显示箭头,code选箭头类型

segments(x0,y0,x1,y1)画线段

10.polygon(x,y)多边形绘制,xy为向量标识顶点坐标

e.g. polygon(c(0.2, 0.2, 0.8), c(0.2, 0.8, 0.8))

11.legend(x,y,legend=c(…),lty,pch,col)图例(标签,线型,点形状,颜色)

12.locator(n) 要求点击n次并记录位置(可替换函数参数x,y)  locator()无限次记录位置

13.pairs(~x1+x2+x3,data= )画散点图矩阵

 

 

五、R编程

1. 函数

  e.g. se <- function(x) {

   sumDiffSqr <- sum((x-mean(x))^2)

   n <- length(x)

   return(sqrt(sumDiffSqr/(n-1)))

}

FOO1 <- function(x) {

  if((x - round(x)) != 0){

    cat("x has been coerced into an integer\n")

    x <- as.integer(x)

  }

  if(x>9 | x<1){

    stop("x must be an integer between 1 and 9")

  } else{

    for(i in 1:9) {

        res <- x*i

        cat(x,'*',i,'=',res,'\n')

    }

  }

}

2.switch

e.g. convert2meters <- function(x,

    units=c("inches", "feet", "yards", "miles")) {

    units <- match.arg(units)

    switch(units,

        inches = x * 0.0254,

        feet = x * 0.3048,

        yards = x * 0.9144,

        miles = x * 1609.344)

}

3. iteration

  ①for(i in 1:n){……}

  ②while (i<=n){……}

  ③repeat {…… break}

4.ifelse{ x[i]==value, 1, 0} 快速判断

基于实时迭代的数值鲁棒NMPC双模稳定预测模型(Matlab代码实现)内容概要:本文介绍了基于实时迭代的数值鲁棒非线性模型预测控制(NMPC)双模稳定预测模型的研究与Matlab代码实现,重点在于提升系统在存在不确定性与扰动情况下的控制性能与稳定性。该模型结合实时迭代优化机制,增强了传统NMPC的数值鲁棒性,并通过双模控制策略兼顾动态响应与稳态精度,适用于复杂非线性系统的预测控制问题。文中还列举了多个相关技术方向的应用案例,涵盖电力系统、路径规划、信号处理、机器学习等多个领域,展示了该方法的广泛适用性与工程价值。; 适合人群:具备一定控制理论基础和Matlab编程能力,从事自动化、电气工程、智能制造、机器人控制等领域研究的研究生、科研人员及工程技术人员。; 使用场景及目标:①应用于非线性系统的高性能预测控制设计,如电力系统调度、无人机控制、机器人轨迹跟踪等;②解决存在模型不确定性、外部扰动下的系统稳定控制问题;③通过Matlab仿真验证控制算法的有效性与鲁棒性,支撑科研论文复现与工程原型开发。; 阅读建议:建议读者结合提供的Matlab代码进行实践,重点关注NMPC的实时迭代机制与双模切换逻辑的设计细节,同时参考文中列举的相关研究方向拓展应用场景,强化对数值鲁棒性与系统稳定性之间平衡的理解。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值