学习R语言时,遇到第一个问题就是“赋值”,r语言的赋值符号是:<-,比如:**a <- 2**
但最新的R版本已经支持 "=" 赋值了,我的是4.1.2;
一门语言的基础知识中,最重要的就是数据类型了。r语言的数据类型有6种:向量、列表、矩阵、数组、因子、数据框,其中数组有点像python中的numpy.array(),数据框有点像python中的DataFrame,只学习了向量、列表、矩阵、数组、数据框;
1、向量
用函数c()来创建向量,向量支持索引查找,但索引从1开始,向量支持标量运算:
# 支持+、-、*、\
a = c(2, 4, 6)
a * 2 -> 4, 8, 12
# 支持线性处理函数:sort、rev、order
#order: 按大小排序,rev: 反转, order:返回排序后的index
a = c(1, 3, 2, 4, 6, 5)
sort(a) -> 1, 2, 3, 4, 5, 6
rev(a)-> 5, 6, 4, 2, 3, 1
order -> 1 3 2 4 6 5
r语言的向量有个神奇操作,可以不用循环的方式连续取数:
a = c(10, 20, 30, 40, 50, 60)
# 如果想要取第一个、第三个、第五个数
a[c(1,3,5)] -> 10 30 50
seq函数可以生成一个等差数列,跟python中的numpy.random.rand()相似;
字符串函数有几个比较常用的:
strsplit:按分隔符拆分字符串
strsplit("2022-01-07", "-") -> "2022" "01" "07"
gsub:替换字符串
gsub("-", "/", "2022-01-07") -> "2022/01/07"
as.numeric:字符串转换为数字
as.character:数字转换为字符串
截取字符串的两个函数:substr、substring
# 从1开始截取,到5结束
substr("123abc456", 1, 5) -> "123ab"
# 从5开始截取到结束
substring("123abc456", 5) -> "bc456"
2、矩阵
用matrix格式化向量来生成矩阵
> vector = c(1, 2, 3, 4)
> matrix(vector, 2, 2) # 这是按列填充,按行填充,需要指定byrow=TRUE
[,1] [,2]
[1,] 1 3
[2,] 2 4
# 指定行名和列名
> m1 = matrix(vector, 2, 2)
> colnames(m1) = c("x", "y")
> rownames(m1) = c("a", "b")
> m1
x y
a 1 3
b 2 4
apply()函数可以将矩阵的每一行或每一列当作向量来进行操作
> m1
x y
a 1 3
b 2 4
> apply(m1, 1, sum) # 按行操作sum
a b
4 6
> apply(m1, 2, sum) # 按列操作sum
x y
3 7