R语言基础

R语言基础

R语言第二章–延续

延续补充:

  • 矩阵的数乘

    a<-matrix(1:20,4,5)
    b<-2
    c<-a*b;c
    #  [,1] [,2] [,3] [,4] [,5]
    #[1,]    2   10   18   26   34
    #[2,]    4   12   20   28   36
    #[3,]    6   14   22   30   38
    #[4,]    8   16   24   32   40
    
  • 矩阵的加减法

    a<-matrix(1:8,2,4)
    b<-matrix(2:10,2,4)
    a-b
    #     [,1] [,2] [,3] [,4]
    #[1,]   -1   -1   -1   -1
    #[2,]   -1   -1   -1   -1
    
  • 矩阵的乘法

    矩阵的乘法操作%*%

    a=rbind(c(2,3,4),c(4,6,10));dim(a)#dim()函数检查矩阵维度
    #[1] 2 3 2行3列
    b=cbind(c(3,7,4),c(5,10,8));dim(b)
    #[1] 3 2 3行2列
    a%*%b
    #     [,1] [,2]
    #[1,]   43   72
    #[2,]   94  160
    
    
  • 单位矩阵diag()

    a=diag(3);a
    #    [,1] [,2] [,3]
    #[1,]    1    0    0
    #[2,]    0    1    0
    #[3,]    0    0    1
    
  • 逆矩阵solve()

a<-matrix(c(3,4,1,2),2,2)
solve(a)
#     [,1] [,2]
#[1,]    1 -0.5
#[2,]   -2  1.5 

2.3 非数值型数据

2.3.1逻辑值

1.逻辑值的输出:关系运算符

运算符解释
==相等
!=不相等
>大于
<小于
>=大于或等于
<=小于或等于
a<-c(2,3,4,5,111,13,6,4877,256)
b<-c(2,3,4,4,57,36,36,364,35)
a==b
#[1]  TRUE  TRUE  TRUE FALSE FALSE FALSE FALSE FALSE FALSE
a>b
#[1] FALSE FALSE FALSE  TRUE  TRUE FALSE FALSE  TRUE  TRUE
a>=b
#[1]  TRUE  TRUE  TRUE  TRUE  TRUE FALSE FALSE  TRUE  TRUE
#两个矩阵也可以进行比较。

注:这些关系符号常用于数值比较

1==2
#[1] FALSE
1!=2
#[1] TRUE

any()与all()用来快速查看逻辑值

如果向量中至少有一个TRUE,any()函数就会返回TRUE,否则返回FALSE。

如果向量中所有逻辑值为TRUE,all()函数就会返回TRUE,否则FALSE。

a<-c(2,3,4,5,111,13,6,4877,256)
b<-c(2,3,4,4,57,36,36,364,35)
c<-a==b
d<-a>=b
any(c)
#[1] TRUE
all(d)
#[1] FALSE

2.逻辑运算符

运算符描述
&AND(元素比较)
|OR(元素比较)
!否/非
&&同上(单值比较)
||同上(单值比较)

&&,||由于比较两个独立值,并返回单个逻辑值。这在if条件语句中较为重要

x1<-c(T,F,F,F,T,T,F)
x2<-c(F,T,F,F,T,F,T)
x1&x2
#[1] FALSE FALSE FALSE FALSE  TRUE FALSE FALSE
x1|x2
#[1]  TRUE  TRUE FALSE FALSE  TRUE  TRUE  TRUE
x1&&x2
#FALSE
x1||x2
#TRUE
#&&、||,只比较两个向量中的第一对元素。

3.逻辑值也是数值

逻辑值基于二进制,TRUE为1 FALSE为0.

x<-TRUE+TRUE;x
#[1] 2
x1<FALSE-1;x1
#[1] -1

4.逻辑值提取子集

y<-c(-4,5,73,3.6,-1,10)
y1<-y<0;y1
#[1]  TRUE FALSE FALSE FALSE  TRUE FALSE
##目的将负数值提取出来
y2<-y[y<0];y2
#[1] -4 -1
2.3.2字符
x<-'fhsfwsjfwjsfjf';length(x)
#[1] 1
#在R语言中x作为实体长度为1的向量,R语言是计算不同字符串的总数,而不是单独字符或单词。
#如果计算单个字符数量使用nchar()
x1<-nchar(x);x1
#[1] 14
  • 字符串连接

    使用cat(),paste()连接字符串

    cat()将内容直接输出到控制台不会返回如何内容。

    paste()将返回以字符串为可用对象,当字符串连接结果需要传递到另一个函数或者其他方式使用,可用其方法。

    x<-c('my','name','is','jack');x
    #[1] "my"   "name" "is"   "jack"
    x1<-cat('my','name','is','tom')
    #my name is tom
    x2<-paste('my','name','is','tom');x2
    #[1] "my name is tom"
    #cat与paste返回值时paste有[1],表明返回包含一个字符串向量。
    ##这两个有个可选参数sep,它是连接字符的字符串。
    x3<-paste('my','name','is','tom',sep='---');x3
    #[1] "my---name---is---tom"
    x4<-cat('my','name','is','tom',sep=' ')
    #my name is tom
    
  • 转义字符

    转义字符结果
    \n换行
    \t水平制表
    \b调用退格
    \\反斜杠
    \‘’双引号
a<-cat('this is a string\nsplit\tto new\b\n\n\ttitles\"\\yes')
#this is a string
#split	to new

#	titles"\yes
  • 替换与查找

    通过substr()通过参数参数start,stop,从字符串x中提取两个字符之间(包括)位置的字符串。

    x<-'this is a beautiful girl'
    substr(x,start=1,stop=4)
    #[1] "this"
    ##将this替换为that
    substr(x,start=1,stop=4)<-'that';x
    #[1] "that is a beautiful girl"
    

    通过sub()或者gsub()替换更加方便。sub函数可以在字符串x中收索出较短字符串模式(pattern)然后使用replacement参数的新字符就行替代。gsub函数相同,但他会替换含有pattern的每一个字符串

    q<-'how much wood could a woodchuck chuck'
    sub(pattern='chuck',replacement='hurl',x=q)
    #[1] "how much wood could a woodhurl chuck"
    gsub(pattern='chuck',replacement='hurl',x=q)
    #[1] "how much wood could a woodhurl hurl"
    
2.3.3因子

因子由于表示不同类别的有限数据,而不是表示连续数据,像分类数据形式在数据科学中发挥着重要作用。

如性别:男 女

sex_char<-c('male','female','male','female')
#将性别编码,男1,女0
sex_num<-c(1,0,1,0)
#因子只能是向量,使用factor()可以创建一个因子向量
sex_num_fac<-factor(x=sex_num);sex_num_fac
#[1] 1 0 1 0
#Levels: 0 1
sex_char_fac<-factor(x=sex);sex_char_fac
#[1] male   female male   female
#Levels: female male
##我们获得了两个存储性别的因子向量。
#使用levels函数可以提取字符串向量的水平值。
levels(sex_num_fac)
#[1] "0" "1"
levels(sex_char_fac)
#[1] "female" "male" 
#可以使用levels重新标记一个因子
levels(sex_num_fac)<-c('1','2')
sex_num_fac
#[1] 2 1 2 1
#Levels: 1 2
##因子向量一样可以就行提取子集
sex_num_fac[1:2]
#[1] 2 1
#Levels: 1 2

2.4列表

列表可以存储多种类型的结构与对象,如数值型矩阵,逻辑数值,字符串,,其它列表也可等等。

创建列表函数为list()

list_1<-list(matrix(1:4,2,2),'sdh',2234,c(T,F));list_1
#[[1]]
#     [,1] [,2]
#[1,]    1    3
#[2,]    2    4

#[[2]]
#[1] "sdh"

#[[3]]
#[1] 2234

#[[4]]
#[1]  TRUE FALSE
length(list_1)
#[1] 4
#利用索引双括号提取数据
list_1[[3]]
#[1] 2234
#利用赋值符就行赋值
list_1[[2]]<-paste(list_[[2]],'hello');list_1[[2]]
#[1] "sdh hello"
#希望访问list_1的第1,第2个组件
list_1[[c(1,2)]]
#[1] 2 #访问的是第一个组的第2个元素
list_1[c(1,2)]
#[[1]]
#     [,1] [,2]
#[1,]    1    3
#[2,]    2    4

#[[2]]
#[1] "sdh hello"

  • 列表命名

    使用names函数给列表元素命名,这样元素更容易被识别。

    如果在创建列表时就命名那么在给每个组件分配一个标签:

    a<-list(a=‘dfhs’,b=matrix(1:4,2,2))此时名字就为a,b

    names(list_1)<-c('a','b','c','d');list_1
    #$a
    #     [,1] [,2]
    #[1,]    1    3
    #[2,]    2    4
    
    #$b
    #[1] "sdh hello"
    
    #$c
    #[1] 2234
    
    #$d
    #[1]  TRUE FALSE
    ####这样就不需要使用中括号来就行索引了直接使用$a等等来
    list_1$a
    #     [,1] [,2]
    #[1,]    1    3
    #[2,]    2    4
    
    
  • 嵌套

    我们使用美元符号来给现有的列表添加组件

    a2<-list(a1='dfhs',b1=matrix(1:4,2,2))
    a2$c1<-list_1
    #$a1
    #[1] "dfhs"
    
    #$b1
    #     [,1] [,2]
    #[1,]    1    3
    #[2,]    2    4
    
    #$c1
    #$c1$a
    #     [,1] [,2]
    #[1,]    1    3
    #[2,]    2    4
    
    #$c1$b
    #[1] "sdh hello"
    
    #$c1$c
    #[1] 2234
    
    #$c1$d
    #[1]  TRUE FALSE
    ##我们定义了第三个名“c1”将list_1赋值给了“c1”,这样我们就可以使用它们组合进行提取“c1”里的元素
    a2$c1$a[1,2]
    #[1] 3 #此时提取了c1中a的第一行第二列元素
    
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值