提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
总结:
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/3db8c5815400d76bd84c6a010fb39c43.png)
- 新建project以及New Blank File 如下图
- 基础tips:()前一定时函数
- 基础快捷键 重启:session-restare run:ctrl+enter
- 解决R语言运行时error的解决方法 如下图
- 1、主要看error后面的信息 查代码是否拼写错误 error:function 说明函数错误(可能函数拼写错误) error:unexpect 说明代码拼写有误
2、查看环境数据 即数据是否在
3、重新run
+:表示命令不完整 可以按esc退出 在加号后 - 脚本打开是乱码 如下图
数据类型
- 逻辑型数据 一般是用来判断两个元素的关系 以及多个逻辑运算的连接 与和或
3!=5 #>,<,<=,>=,==,!=(!表示非)
3<5 & 3>5 #and
3<5 | 3>5 #or
- 数据类型:判断数据类型class() 字符型>数值型>逻辑型
x=c(1);class(x) #数值型"numeric"
x=c("1");class(x) #字符型"character"
x=c(T);class(x) #逻辑性"logical"
- 数据类型的判断 is.numeric()和转换as.numeric() 用在判断新的数据是什么类型
x=c(1);is.numeric(x) #判断is.numeric(x) is.character(x) is.logical(x)
x=c("1");as.numeric(x) #转换as.numeric(x) as.character(x) as.logical(x)
向量的生成
- 基础向量
c(2,5,6,2,9) #用c() 放到一起
1:5 #连续数字用:
rep('x',times=3) #重复用rep(),有规律序列用seq(),随机数用rnorm()
rep(c("a","b"),each = 3) #[1] "a" "a" "a" "b" "b" "b"
rep(c("a","b"),times = c(1,2)) #[1] "a" "b" "b"
seq(from=1,to=5,by=3) #[1] 1 4
rnorm(3)#[1] 1.6 25 -0.1
- 组合向量的生成
paste0(rep('x',times=3),1:3)#"x1" "x2" "x3" 可简写
paste0(rep("x",3),1:3)
paste(rep("x",times = 3),1:3,sep='$')#[1] "x$1" "x$2" "x$3"
- 对单个向量进行操作 赋值 简单计算(比较运算 统计数据)
x<-c(1,3,8);x #赋值<- or = 注意变量名称不可用特殊字符
x+1 #[1] 2 4 9
log(x) #[1] 0.000000 1.098612 2.079442
sqrt(x) #[1] 1.000000 1.732051 2.828427
x <- c(1,3,5);x>3 #比较运算
x <- c(1,3,5);x==3 #比较运算
x <- c(1,3,5,1) #初级统计
max(x) #初级统计最大值
min(x) #最小值
mean(x) #均值
median(x) #中位数
var(x) #方差
sd(x) #标准差
sum(x) #总和
length(x) #长度
unique(x) #去重复 [1] 1 3 5
duplicated(x) #判断对应元素是否重复[1] FALSE FALSE FALSE TRUE
table(x) #重复值统计
sort(x) #排序
sort(x,decreasing = F)
sort(x,decreasing = T)
- 对两个向量的操作 #主要思想等位运算 长度不一致会循环补齐
x = c(1,3,5,1)
y = c(3,2,5,6)
x == y #[1] FALSE FALSE TRUE FALSE
y == x #[1] FALSE FALSE TRUE FALSE
x + y #[1] 4 5 10 7 加成
paste0(x,y) #paste与paste0的区别 [1] "13" "32" "55" "16"paste0的本质是组合
paste(x,y) #[1] "1 3" "3 2" "5 5" "1 6"
paste(x,y,sep="*") # 连接 [1]"1*3" "3*2" "5*5" "1*6"
8.对两个向量的操作 #主要思想等位运算 长度不一致会循环补齐 如下图
x = c(1,3,5,1)
y = c(3,2)
x == y #[1] FALSE FALSE FALSE FALSE
paste0(rep("x",3),1:3)
paste0("x",1:3) #利用循环补齐简化代码
x = c(1,3,5,1)
y = c(3,2,5,6)
9.对两个向量的操作 #主要思想两个向量元素交集并集差集%in%
intersect(x,y) #取交集,使用频率很高
union(x,y) #取并集,自动去重复
setdiff(x,y) #取差集,在x中有,在y中没有
setdiff(y,x) #取差集,在y中有,在x中没有
x %in% y #x的每个元素在y中存在吗[1] FALSE TRUE TRUE FALSE 区别于==
- 对向量的操作之筛选 #主要思想[]内根据逻辑值给出内容 如下图
x <- 8:12
x[x == 10] # [1] 10
x[x < 12] # [1] 8 9 10 11
x[x %in% c(9,13)] # [1] 9
- 对向量的操作之筛选 #主要思想[]内根据位置给出内容提取子集 如下图
x <- 8:12
x[4]# [1] 11
x[2:4]# [1] 9 10 11
x[c(1,5)]# [1] 8 12
x[-4]#反选 [1] 8 9 10 12
x[-(2:4)]# [1] 8 12
x=c(1,2,3,4,1,2,3,8,9,2,4,5)#从一堆元素中挑选出特定的元素
y=c(1,3)
x[x %in% y]#利用思想根据搭建逻辑值筛选内容
- 修改向量中的某个/某些元素
x=c(1,2,3,4)
x[x>3];x #挑出x>3,但x仍没变因为没有赋值主要思想:R语言的修改都要赋值,没有赋值就没有发生。
x=x[x>3];x
x=c(1,2,3,4)
x[3] <- 10;x #改一个元素[1] 1 2 10 4 同时赋值
x[c(1,4)] <- c(20,50);x#改多个元素,同时赋值
- 简单的向量作图
k1 = rnorm(12);k1
k2 = rep(c("a","b","c","d"),each = 3);k2 #rep的两个参数:'each'和'times'
plot(k1)
boxplot(k1~k2) ##k1纵坐标,k2横坐标