0
点赞
收藏
分享

微信扫一扫

R语言学习笔记 note1

AbrahamW 2022-03-15 阅读 85

一.Vector 向量

1.创建一个向量(num, char, logical, factor)

v1 = c(1, 2, 3, 4, 0.15) # num类型向量,c()代表连接
v2 = c("Apple", "Banana", "Cherry") # char类型向量
v3 = c(TRUE, FALSE) # logical类型向量
v4 = factor(v3) # factor类型变量
c(v1,v2) # 自动将num类型转换为char类型与v2连接
names(v2) = c("int","decimal") # 给变量值添加名称

【向量类型运行结果】

在这里插入图片描述

2.简单的数学运算和逻辑运算

# 简单的数学运算

c(9, 9, 6) + c(2, 5, 1) # 加法 11 14  7
c(9, 9, 6) - c(2, 5, 1) # 减法 7 4 5
c(9, 9, 6) * c(2, 5, 1) # 乘法 18 45  6
c(9, 9, 6) / c(2, 5, 1) # 除法 4.5 1.8 6.0
c(9, 9, 6) %/% c(2, 5, 1) # 整除 4 1 6
c(9, 9, 6) %% c(2, 5, 1) # 取余 1 4 0
c(9, 9, 6) ^ c(2, 5, 1) # 乘方 81 59049     6
c(1, 2, 3) + c(10, 100, 1000, 10000) # 缺值默认为1
c(1, 2, 3) + 1 # 各位都加1

# 向量的逻辑运算

TRUE & TRUE # 与
TRUE | FALSE # 或
!FALSE # 非

3.创建更复杂的向量(seq,rep)

v1 = 1:100 # 创建1~100
v3 = seq(from=100, to=1, by=-3) # 创建100~1内,每次减3的向量,from,to,by可以省略)
rep(1:5, each=3) # 1 1 1 2 2 2 3 3 3 4 4 4 5 5 5
rep(1:5, times=3) # 1 2 3 4 5 1 2 3 4 5 1 2 3 4 5
rep(1:5, times=1:5) #  1 2 2 3 3 3 4 4 4 4 5 5 5 5 5

4.字符向量的粘贴

paste(c("a", "b", "c"), c("x", "y", "z"), sep="") # "ax" "by" "cz"
paste(c("a", "b", "c"), c("x", "y", "z"), collapse="&") # "a x&b y&c z"
paste("x", 1:5, sep="", collapse="+") # "x1+x2+x3+x4+x5"

5.向量的索引

v1 = c(6:10, 1:5) #  6  7  8  9 10  1  2  3  4  5
v1[1] # 6,!!!R语言第一个数索引为1,不是0,与其他编程语言不一样
v1[-1] # 7  8  9 10  1  2  3  4  5,R语言中-是把那一个位置上的向量删除

习题

Q1: 找出1~100以内所有能被4除余1的整数。

v1 = seq(1,97,4)

Q2: 《孙子算经》今有物不知其数,三三数之剩其二,五五数剩其三,七七数剩其二,问物几何?(不完善

v1 = seq(9,1000,7)
v1[v1 %% 3 == 2 & v1 %% 5 == 3 & v1 %% 7 ==2]
# 只能实现找出1~1000内的解,感觉方法不够完善

Q3: 求出从公元元年到公元1000年中,所有闰年的年份。 (闰年的定义: 能被4整除,且不能被100整除,但能被400整除的除外)

v1 = seq(0,1000,1)
v1[v1 %% 4 == 0 & v1 %% 100 != 0 | v1 %% 400 == 0]

Q4:创建一个等差序列: 8,11,14,…,50。

seq(from=8, to=50, by=3)

Q5:Q4序列中能被5整除的是哪些数?

v1 = seq(8, 50, 3)
v1[v1 %% 5 == 0]

Q6:创建一个等比序列: 1,2,4,8,…,8192。

2^(0:13)
举报

相关推荐

0 条评论