做cpa必须要有网站吗,网络营销是营销的网络化吗,手机手机网站建设,网站建设特定开发文章目录 0. 变量名1.基本数据类型1.1 数值型1.2 整型1.3 复数型1.4 逻辑型1.5 字符型 2.复合数据类型2.1 向量向量操作向量的常用函数 2.2 矩阵矩阵操作矩阵的常用函数 2.3 数组数组的操作数据的运算数组的访问数组的维度操作 数组的常用函数 2.4 数据框数据框操作数据框的常用… 文章目录 0. 变量名1.基本数据类型1.1 数值型1.2 整型1.3 复数型1.4 逻辑型1.5 字符型 2.复合数据类型2.1 向量向量操作向量的常用函数 2.2 矩阵矩阵操作矩阵的常用函数 2.3 数组数组的操作数据的运算数组的访问数组的维度操作 数组的常用函数 2.4 数据框数据框操作数据框的常用函数 2.5 列表列表的操作列表的常用函数 0. 变量名
R 语言的有效的变量名称由字母数字以及点号 . 或下划线 _ 组成 不能以数字和下划线 _开头. 号开头后面不能跟着数字区分大小写不要使用保留名 1.基本数据类型
1.1 数值型
# 一般数值
x - 10 # 整数(实际存储为浮点数)
y - 3.14 # 浮点数
# 科学计数e,E都可以使用
large_num - 2.5e6 # 等于 2.5 * 10^6表示2500000
small_num - 3.1E-4 # 等于 3.1 * 10^-4表示0.000311.2 整型
和数值型整数的区别就是整型占往往用的内存更少4字节数值型是8字节
x - 5L
y - -6L1.3 复数型
# 使用 complex() 函数创建复数
z1 - complex(real 3, imaginary 4)
# 使用 1i 表示虚数单位
z2 - 2 3i # 创建复数 2 3i1.4 逻辑型
要大写
x - TRUE
y - FALSE1.5 字符型
text1 - Hello, World!
text2 - R语言字符型2.复合数据类型 2.1 向量
向量是最基本的复合数据类型(一维)向量中的所有元素必须是相同的数据类型可以是以下几种
# 数字型向量Numeric
numeric_vector - c(1.5, 2.5, 3.5, 4.5, 5.5)# 字符型向量Character
character_vector - c(a, b, c, d, e)# 逻辑型向量Logical
logical_vector - c(TRUE, FALSE, TRUE)# 整数型向量Integer
integer_vector - c(1L, 2L, 3L, 4L, 5L)# 复杂型向量Complex
complex_vector - c(12i, 3-4i, 56i, 7-8i, 910i)
可以使用typeof()或class()函数来查看向量的类型
typeof(numeric_vector) # 返回 double
class(character_vector) # 返回 character向量操作
元素访问可以通过索引访问向量的元素索引从1开始
numeric_vector[1] # 返回 1.5向量运算可以对向量进行数学运算这些运算会逐元素执行。
numeric_vector 2 # 每个元素加2结果为 c(3.5, 4.5, 5.5, 6.5, 7.5)逻辑操作可以对逻辑向量进行与、或|操作。
logical_vector c(TRUE, TRUE, FALSE) # 结果为 c(TRUE, FALSE, FALSE)如果长的对象长度是短的对象长度的整倍数R会将较短的向量自动扩展重复以匹配较长的向量。这种特性称为“回收规则”recycling rule。
向量的常用函数
length()返回向量的长度。
sum()计算向量的所有元素之和适用于数值向量。
mean()计算向量的平均值适用于数值向量。
sort()对向量进行排序。 sort(x, decreasing FALSE, na.last TRUE) x要排序的向量。decreasing逻辑值默认为 FALSE表示升序排列如果为 TRUE则表示降序排列。na.last控制 NA 值的位置默认为 TRUE表示将 NA 值放在最后如果为 FALSE则将 NA 值放在最前面如果为 NA则去除所有 NA 值。 unique()返回向量中的唯一值即去重复类似python中的set作用
2.2 矩阵
矩阵是一个二维的数据结构它是一个由行和列组成的元素集合所有元素的类型必须相同。 mat - matrix(data, nrownumber_of_rows, ncolnumber_of_columns, byrowlogical_value) data: 用于填充矩阵的数据。 nrow: 矩阵的行数。 ncol: 矩阵的列数。 byrow: 是否按行填充默认为按列填充 # 创建一个2x3的矩阵按列填充
mat - matrix(1:6, nrow 2, ncol 3)
print(mat)[,1] [,2] [,3]
[1,] 1 3 5
[2,] 2 4 6矩阵操作
矩阵访问使用方括号[]来访问矩阵中的元素。格式为matrix[row, col]其中row表示行col表示列。
mat[1, 2] # 访问第一行第二列的元素
mat[1, ] # 选择第一行
mat[, 2] # 选择第二列
mat[1:2, ] # 子矩阵提取 访问的同时也可以修改matrix[row, col] - new_value 行列绑定:
rbind(): 按行绑定将多个矩阵或向量合并为一个矩阵。cbind(): 按列绑定将多个矩阵或向量合并为一个矩阵。
# 创建两个矩阵
mat1 - matrix(1:6, nrow 2)
mat2 - matrix(7:12, nrow 2)# 按行绑定
mat_rbind - rbind(mat1, mat2)
print(mat_rbind)# 按列绑定
mat_cbind - cbind(mat1, mat2)
print(mat_cbind)矩阵运算
# 创建两个矩阵
mat1 - matrix(1:4, nrow 2)
mat2 - matrix(5:8, nrow 2)# 矩阵加法
mat_add - mat1 mat2
print(mat_add)# 矩阵减法
mat_sub - mat1 - mat2
print(mat_sub)# 逐元素乘法
mat_mult - mat1 * mat2
print(mat_mult)# 逐元素除法
mat_div - mat1 / mat2
print(mat_div)# 矩阵乘法(线性代数)
mat_product - mat1 %*% mat2
print(mat_product)矩阵的常用函数
矩阵转置矩阵的转置将行变为列列变为行。
# 矩阵转置
mat - matrix(1:6, nrow 2)
transposed_mat - t(mat)
print(transposed_mat)求逆矩阵solve()函数用于求解矩阵的逆矩阵适用于方阵行数和列数相等。
# 求逆矩阵
square_mat - matrix(c(1, 2, 3, 4), nrow 2)
inverse_mat - solve(square_mat)
print(inverse_mat)矩阵的行列式det()函数计算方阵的行列式。
# 计算行列式
determinant - det(square_mat)
print(determinant)矩阵的秩qr()函数可以用来计算矩阵的秩。
# 矩阵的秩
rank_mat - qr(square_mat)$rank
print(rank_mat)特征值和特征向量eigen()函数计算方阵的特征值和特征向量。
# 计算特征值和特征向量
eigen_result - eigen(square_mat)
print(eigen_result$values) # 特征值
print(eigen_result$vectors) # 特征向量2.3 数组
数组是用于存储相同数据类型的多维数据结构。数组与向量类似但它可以有多个维度比如二维数组矩阵或三维及更高维的数组。 array(data NA, dim length(data), dimnames NULL) ata要填充数组的元素通常是一个向量。 dim数组的维度。可以是一个向量表示每个维度的大小。 dimnames数组中每个维度的名称可选。 data - 1:18
dim_names - list(c(Row1, Row2, Row3), c(Col1, Col2, Col3), c(Matrix1, Matrix2))
my_array - array(data, dim c(3, 3, 2), dimnames dim_names)
print(my_array), , Matrix1Col1 Col2 Col3
Row1 1 4 7
Row2 2 5 8
Row3 3 6 9, , Matrix2Col1 Col2 Col3
Row1 10 13 16
Row2 11 14 17
Row3 12 15 18数组的操作
数据的运算
与之前的类似长的对象长度是短的对象长度的整倍数R会将较短的向量自动扩展重复以匹配较长的向量。
# 创建两个3x3x2的数组
array1 - array(1:18, dim c(3, 3, 2))
array2 - array(18:1, dim c(3, 3, 2))# 加法
sum_array - array1 array2# 减法
diff_array - array1 - array2# 乘法
prod_array - array1 * array2# 除法
div_array - array1 / array2# 与标量的运算
scalar_add - array1 5数组的访问
单个元素的访问
element - array1[2, 3, 1]选择子数组
sub_array - array1[,,2]数组的维度操作
dim()函数获取或设置数组的维度。
dim(array1) # 获取数组的维度
dim(array1) - c(9, 2) # 修改数组的维度dimnames()函数获取或设置数组的维度名称。
dimnames(array_named) # 获取维度名称
dimnames(array1) - list(c(A, B, C), c(X, Y, Z), c(M1, M2)) # 设置维度名称数组的常用函数
apply()函数apply()函数可以沿数组的任一维度应用函数如求和、平均值等
apply(X, MARGIN, FUN, ...)# 创建一个3x3x2的数组
array1 - array(1:18, dim c(3, 3, 2))# 沿第一个维度求和
sum_result - apply(array1, 1, sum)
print(sum_result)# 沿第二个维度计算平均值
mean_result - apply(array1, 2, mean)
print(mean_result)2.4 数据框
数据框是一种用于存储表格数据的结构它的每一列可以包含不同的数据类型如数值、字符、因子等。
df - data.frame(Name c(Alice, Bob, Charlie),Age c(25, 30, 35),Salary c(50000, 55000, 60000)
)数据框操作
查看数据框结构
str(df)data.frame: 3 obs. of 3 variables:$ Name : chr Alice Bob Charlie$ Age : num 25 30 35$ Salary: num 50000 55000 60000访问数据框中的列
df$Name # 访问 Name 列, 返回一个向量
df[[Name]] # 访问 Name 列, 返回一个向量
df[Name] # 访问 Name 列, 返回一个数据框
df[1] # 访问第 1 列结果是一个数据框子集操作
df[1:2, ] # 选择前两行
df[, 1:2] # 选择前两列
df[df$Age 28, ] # 筛选 Age 大于 28 的行添加新列
df$Department - c(HR, IT, Finance) # 使用 $ 符号
df[Experience] - c(2, 5, 7) # 使用 [] 操作符删除列
df$Department - NULL # 删除 Department 列合并数据框
# 创建另一个数据框
df2 - data.frame(Name c(David, Eva),Age c(28, 24),Salary c(58000, 52000)
)# 按行合并
combined_df - rbind(df, df2)# 按列合并
combined_df - cbind(df, Experience c(2, 5, 7, 3, 4))数据框的常用函数
·head(df, n) 和 tail(df, n)查看前 n 行或后 n 行。
·dim(df)查看数据框的维度行数和列数。
·nrow(df) 和 ncol(df)分别返回行数和列数。
·summary(df)生成数据框的摘要统计信息。
·merge(df1, df2, by column_name)按列合并两个数据框。
2.5 列表
列表是一种通用的数据结构可以容纳不同类型的数据对象。列表是R中的一种非常灵活的数据类型因为它可以包含多种类型的元素包括向量、矩阵、数据框、甚至其他列表。
my_list - list(1, Hello, TRUE) # 创建一个简单的列表my_named_list - list(Number 1, Text Hello, Logical TRUE) # 创建一个带有名称的列表nested_list - list(list(1, 2), list(a, b)) # 嵌套列表列表的操作
my_list[[1]] # 访问第一个元素
my_list[1] # 返回一个列表只包含第一个元素
my_named_list$Text # 访问名为 Text 的元素
nested_list[[1]][[2]] # 访问嵌套列表中的第二个元素my_list[[1]] - 100 # 修改元素
my_list[[4]] - NULL # 删除元素列表的常用函数
length(my_list) # 来获取列表的长度
combined_list - c(my_list, my_named_list)v # 使用c()函数来合并两个或多个列表
is.list(my_list) # 判断一个对象是否是列表列表和数据框都可以包含不同类型的对象但列表和数据框的区别是列表是一维和数据框是二维。除此之外数据框要求每列的长度必须一致即数据框的行数相同但列表并不要求每个元素的长度一致。