# 基本运算.标量(长度为1)

1 + 2 # 加
3 - 2 # 减
3 * 4 # 乘
8 / 5 # 除
c(1:4) / c(2:5) # 循环扩展 ,长度为4,相同位置的数字相除
c(1:6) / c(2:5) # 循环扩展,长度不一样时,长对象循环匹配短对象,就是短对象从头开始自己循环,会有一个warning,不影响运算
4 ^ 3 # 幂运算,底数^指数(这个符号切换输入法之后是……)
exp(1) # 自然常数e为底的幂运算
log(x = 25, base = 5) # 5为底25的对数
sqrt(4) # 开平方
abs(-5.6) # 绝对值
sign(-5.6) # 符号函数,当参数为正,返回1;为0,返0;为负,返-1
round(3.45679, 2) # 保留指定位小数,
signif(3.245, 2) # 保留指定位有效数字
ceiling(3.2) # 天花板
floor(3.2) # 地板
2 == 3
2 != 3
2 > 3
2 < 3
2 <= 3
2 %in% 2:5 # 包含运算,二元操作符,可以自己构建,是否包含于
(2 > 3) & (2 %in% 2:5)  # 与
(2 > 3) | (2 %in% 2:5)  # 或
(2 %in% 2:5)         # 非
# 向量相关函数
v2 <- c(3, 2,7,4,6,8,11,21)
max(v2)                   # 最大值
cummax(v2)               # 累积最大值,cumulative,累积的含义是什么?
min(v2)                   # 最小值
cummin(v2)                 # 累积最小值
sum(v2)                 # 求和
cumsum(v2)                 # 累积求和
prod(v2)                 # 乘积
cumprod(v2)                 # 累积乘积
mean(v2)
median(v2)
sd(v2)
var(v2)                  # 方差
rev(v2)                 # 向量逆转
sort(v2)                 # 向量重排
v5 <- rep(v2,times = 2)
table(v5)                 # 向量元素频数统计
unique(v5)                 # 向量的取值水平
# 索引函数
which(v5==7)  # v5中7所在的位置返回TRUE or FLASE
which.max(v5)   ?为什么会返回8
which.min(v5)  #第一次出现的最小值
# 交集
Intersect(1:5, 4:7)
# 差集,前减后
Setdiff(1:5, 4:7)
# 并集,在元素水平保留唯一值
union(1:5, 4:7)

# 数据框和矩阵相关函数

dfs <- data.frame(
a=1:5,
b=3:7,
d=letters[1:5]
)
# 行列合并
df1 <- dfs[1:3, ]
df1
df2 <- dfs[3:5, ]
df2
# 行合并
rbind(df1, df2)       # 列数、列名称相同
# 列合并
cbind(df1, df2)       # 行数相同
# 行列运算
colMeans(dfs[,1:2])
colSums(dfs[,1:2])
rowMeans(dfs[,1:2])
rowSums(dfs[,1:2])
# apply(x, margin, function)
apply(dfs[,1:2], 2, sd)  # 1对应行,2对应列
apply(
dfs[,1:2],
2,
function(x){sum(is, na(x))}
)
# 对象结构信息
str(dfs)
summary(dfs)
View(dfs)
head(dfs, n = 2)
tail(dfs, n = 2)
# 矩阵运算
m3 <- matrix(
c(5,7,3,4),
ncol=2,
byrow=T
)
m3
m4 <- matrix(
c(5,7,3,4,8,9),
ncol=3,
byrow=T
)
m4
t(m3)
det(m3)
m3 %*% m4
solve(m3)                                 # .m3 %*% x = E
solve(m3, m4)                              # .m3 %*% x = m4

# 字符函数与分布相关函数

# 连接成字符向量
paste(1:5, collapse = “+”)
paste(letters[1:5], collapse = “-”)
paste(1:5, letters[1:8], sep =”~”)  # 两个向量之间
paste0(1:5, letters[1:8])
# 字符长度
nchar(month.name)
# 全部转大写
toupper(month.name)
# 全部转小写
tolower(month.name)
# 含有某个字符的元素的索引
grep(“ju”, month.name)
# 替换字符
gsub(“e”, “000”, month.name)
# 随机分布相关函数
Set.seed(24)
Sample(1:2,12, replace = T)  # 随机抽象有放回
rnorm(10, mean = 1, sd = 2)
pnorm(1, mean = 1, sd = 2) # 累积概率
qnorm(0.5, mean = 1, sd = 2)
dnorm(1,mean = 1, sd = 2)
plot(x = seq(-5, 7, length=1000),
y = dnorm(seq(-5, 7,length=1000),
mean =1,
sd =2),
type = “l”   #是字母
ylim = c(0, 0.25))
abline(h = 0,
v = 1)