R语言(1)

本文介绍了R语言的基础操作,包括创建向量和矩阵、求值函数如mean()和sum(),以及矩阵运算。还讨论了如何生成向量,如使用Seq()函数,并详细阐述了数据框的特性。此外,文章涵盖了统计分析函数,如summary(),并讲解了如何绘制各种统计图形,如散点图、直方图和箱形图。
摘要由CSDN通过智能技术生成

创建向量和矩阵

  1. 函数c():用来把一些数据组合成向量
  2. nchar():主要使用来返回字符长度 length():则是用来返回字符数量
  3. mode():指变量的类型如:数值型、字符型、逻辑型等 class():指变量的类别如:矩阵、列表、数据框等 typeof():对变量类型的细分
  4. 函数cbind() 和rbind() 把向量和矩阵拼成一个新的矩阵。 cbind() 把矩阵横向合并成一个大矩阵(列方式),而rbind()是纵向合并(行方式)。
x=c(1,2,3,7,5)
y=3L
a="Jone"
b=c("Tom","Amy","Bob")
#####函数c()#####
x               #[1] 1 2 3 7 5
#####length()与nchar()#####
length(x)       #5
length(y)       #1
length(a)       #1
length(b)       #3

nchar(x)        #1 1 1 1 1
nchar(y)        #1
nchar(a)        #4
nchar(b)        #3 3 3
#####mode()、class()、typeof()#####
mode(x)         #"numeric"
mode(y)         #"numeric"
mode(a)         #"character"
mode(b)         #"character"


class(x)          #"numeric"
class(y)          #"integer"
class(a)          #"character"
class(b)          #"character"

typeof(x)         #"double"
typeof(y)         #"integer"
typeof(a)         #"character"
typeof(b)         #"character"
#####rbind()与cbind()#####
rbind(x,b)
#  [,1]  [,2]  [,3]  [,4]  [,5] 
#x "1"   "2"   "3"   "7"   "5"  
#b "Tom" "Amy" "Bob" "Tom" "Amy"
cbind(x,b)
#     x   b    
#[1,] "1" "Tom"
#[2,] "2" "Amy"
#[3,] "3" "Bob"
#[4,] "7" "Tom"
#[5,] "5" "Amy"

求值

  1. mean():求算术平均值

  2. sum():求和

  3. min():最小值

  4. max():最大值

  5. var():样本方差在这里插入图片描述

  6. sd():标准差

  7. median():中位数

  8. cov():协方差

  9. cor():相关系数

  10. prod():向量元素乘积,返回所有参数中元素乘积

产生向量

  1. 基础
A<-1:20                     #[1]  1  2  3  4  5  6  7  8  9 10 11 12 13 14 15 16 17 18 19 20
A<-1:20*2+2                 #[1]  4  6  8 10 12 14 16 18 20 22 24 26 28 30 32 34 36 38 40 42
A[-5]                       #[1]  4  6  8 10 14 16 18 20 22 24 26 28 30 32 34 36 38 40 42
A[5]                        #[1] 12
A[(1:5)]                    #[1]  4  6  8 10 12
A[-(1:5)]                   #[1] 14 16 18 20 22 24 26 28 30 32 34 36 38 40 42
A[1]                        #[1]  4
A[A[1]]                     #[1] 10
A[1,2,3]                    #Error in A[1, 2, 3] : 量度数目不对
c(1,2,3)                    #[1] 1 2 3
A[c(1,2,3)]                 #[1] 4 6 8
A[A<20]                     #[1]  4  6  8 10 12 14 16 18
A[A>20&A<40]                #[1] 22 24 26 28 30 32 34 36 38
  1. Seq()函数:Seq(from,to,by/length)
    by = ((to - from)/(length - 1))
seq(1,20)                   #[1]  1  2  3  4  5  6  7  8  9 10 11 12 13 14 15 16 17 18 19 20
seq(1,20,by=2)              #[1]  1  3  5  7  9 11 13 15 17 19
seq(1,20,length=10)         #[1]  1.000000  3.111111  5.222222  7.333333  9.444444 11.555556 13.666667 15.777778 17.888889 20.000000
seq(1,20,by=2,length=10)    #Error in seq.default(1, 20, by = 2, length = 10) : 太多参数
  1. LETTERS[]:产生大写字母序列;letters[]:产生小写字母序列
letters                     #[1] "a" "b" "c" "d" "e" "f" "g" "h" "i" "j" "k" "l" "m" "n" "o" "p" "q" "r" "s" "t" "u" "v" "w" "x" "y" "z"
letters[3]                  #[1] "c"  
letters[1,2,3]              #Error in letters[1, 2, 3] : 量度数目不对
letters[c(1,2,3)]           #[1] "a" "b" "c"
letters[1:30]               #[1] "a" "b" "c" "d" "e" "f" "g" "h" "i" "j" "k" "l" "m" "n" "o" "p" "q" "r" "s" "t" "u" "v" "w" "x" "y" "z" NA  NA  NA  NA     

新建向量

  1. which()函数
    which.max(a):取数组最大值的下标
    which.min(a):取数组最小值的下标
    which(a>3):取数组小于3的下标
    which(a==3):取数组等于3的下标
    which(10:1 %in%a):取数组中在1-10的数
m<-c(2,1,4,3,5,7,8,6,22,90,75,44,32)
m                           #[1]  2  1  4  3  5  7  8  6 22 90 75 44 32
which.max(m)                #[1] 10
which.min(m)                #[1] 2
which(m<5)                  #[1] 1 2 3 4
m[which(m<5)]               #[1] 2 1 4 3
which(m==22)                #[1] 9
m[which(m==22)]             #[1] 22  
which(1:80%in%m)            #[1]  1  2  3  4  5  6  7  8 22 32 44 75    
which(80:1%in%m)            #[1]  6 37 49 59 73 74 75 76 77 78 79 80    

a=c(1,3,4,5,3,2,5,6,3,2,5,6,7,5,8)
which(10:1%in%a)            #[1]  3  4  5  6  7  8  9 10
which(1:10%in%a)            #[1] 1 2 3 4 5 6 7 8
  1. rev():向量倒序/逆转
    sort():排序(或命令)一个向量或因素(部分)升序或降序排序
m=1:20
m                           #[1]  1  2  3  4  5  6  7  8  9 10 11 12 13 14 15 16 17 18 19 20
rev(m)                      #[1] 20 19 18 17 16 15 14 13 12 11 10  9  8  7  6  5  4  3  2  1

n=c(2,9,5,4,10,34,24,26,90,6,23,57)
n                           #[1]  2  9  5  4 10 34 24 26 90  6 23 57
sort(n)                     #[1]  2  4  5  6  9 10 23 24 26 34 57 90
sort(n,decreasing = F)      #[1]  2  4  5  6  9 10 23 24 26 34 57 90
sort(n,decreasing = T)      #[1] 90 57 34 26 24 23 10  9  6  5  4  2

rev(sort(n))                #[1] 90 57 34 26 24 23 10  9  6  5  4  2  

生成矩阵 函数matrix()

matrix(data, nrow, ncol, byrow, dimnames)
data - 是这成为矩阵的数据元素输入向量。
nrow - 是要创建的行数。
ncol - 要被创建的列的数目。
byrow - 是一个合乎逻辑。如果为True,那么输入向量元素在安排的行。
dimname - 是分配给行和列名称。

matrix(c(1,2,3,4,5,6,7,8,9,10,11,12),3,4)
#     [,1] [,2] [,3] [,4]
#[1,]    1    4    7   10
#[2,]    2    5    8   11
#[3,]    3    6    9   12
matrix(c(1,2,3,4,5,6,7,8,9,10,11,12),3,4,T)
#     [,1] [,2] [,3] [,4]
#[1,]    1    2    3    4
#[2,]    5    6    7    8
#[3,]    9   10   11   12
matrix(c(1,2,3,4,5,6,7,8,9,10,11,12),3,4,T,dimnames = list(c("row1",'row2','row3'),c('col1','col2','col3','col4')))
#     col1 col2 col3 col4
#row1    1    2    3    4
#row2    5    6    7    8
#row3    9   10   11   12

访问矩阵

p=matrix(c(1,2,3,4,5,6,7,8,9,10,11,12),3,4,T,dimnames = list(c("row1",'row2','row3'),c('col1','col2','col3','col4')))
#     col1 col2 col3 col4
#row1    1    2    3    4
#row2    5    6    7    8
#row3    9   10   11   12
p[1,3]                      #[1] 3  
p[1,]                       #col1 col2 col3 col4 
                            #1    2    3    4
p[,3]                       #row1 row2 row3 
                            #3    7   11

矩阵运算

  1. 矩阵加减:
  2. 矩阵相乘:
  3. 矩阵求逆:solve()函数;奇异矩阵(行列式为0)没有逆矩阵;
  4. t()函数:矩阵行列转换/转置矩阵
  5. diag()函数:提取或替换一个矩阵的对角线,或构造一个对角矩阵
  6. rnorm()函数(正态分布 ):产生一系列的随机数,随机数个数,均值和标准差都可以设定
    rnorm(n, x, y): 产生n个平均数为x,标准差为y的数。 默认情况下,平均数为0, 标准差为1
  7. solve()函数:
    solve(a):求矩阵a的逆
    solve(a,b):求解线性方程
  8. eigen()函数:求解矩阵的特征值与特征向量
> e=matrix(c(1:9),3,3)
> e
     [,1] [,2] [,3]
[1,]    1    4    7
[2,]    2    5    8
[3,]    3    6    9
> f=matrix(c(11:19),3,3)
> f
     [,1] [,2] [,3]
[1,]   11   14   17
[2,]   12   15   18
[3,]   13   16   19
> #加法:
> e+f
     [,1] [,2] [,3]
[1,]   12   18   24
[2,]   14   20   26
[3,]   16   22   28
> #减法:
> e-f
     [,1] [,2] [,3]
[1,]  -10  -10  -10
[2,]  -10  -10  -10
[3,]  -10  -10  -10
> f-e
     [,1] [,2] [,3]
[1,]   10   10   10
[2,]   10   10   10
[3,]   10   10   10
> #乘法:
> e*f
     [,1] [,2] [,3]
[1,]   11   56  119
[2,]   24   75  144
[3,]   39   96  171
> e%*%f
     [,1] [,2] [,3]
[1,]  150  186  222
[2,]  186  231  276
[3,]  222  276  330
> #除法:
> e/f
           [,1]      [,2]      [,3]
[1,] 0.09090909 0.2857143 0.4117647
[2,] 0.16666667 0.3333333 0.4444444
[3,] 0.23076923 0.3750000 0.4736842
> f/e
          [,1]     [,2]     [,3]
[1,] 11.000000 3.500000 2.428571
[2,]  6.000000 3.000000 2.250000
[3,]  4.333333 2.666667 2.111111
> f%/%e
     [,1] [,2] [,3]
[1,]   11    3    2
[2,]    6    3    2
[3,]    4    2    2
> #求余:
> e%%f
     [,1] [,2] [,3]
[1,]    1    4    7
[2,]    2    5    8
[3,]    3    6    9
> #矩阵行列转换:
> t(e)
     [,1] [,2] [,3]
[1,]    1    2    3
[2,]    4    5    6
[3,]    7    8    9
> t(f)
     [
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值