R语言学习笔记(二)--向量,函数,集合

向量索引和subset函数

向量的名字

> height<-c(155,186,177,169)
> names(height)
NULL
> names(height)<-c('Mary','Jason','Tom','Tina')
> height
 Mary Jason   Tom  Tina 
  155   186   177   169 

另一种类似与字典创建的命名方式

> s<-c(Tony=87,Mary=92,Lisa=80,John=78,Victor=93)
> s
  Tony   Mary   Lisa   John Victor 
    87     92     80     78     93 

names(height)<-c(‘Mary’,‘Jason’,‘Tom’,‘Tina’)
本质上是调用了一个置换函数'name<-'()

向量索引

需要注意[]内是向量和负数以及逻辑型向量的情况,负数表示排除绝对值下标的索引

> x<-101:108
> x
[1] 101 102 103 104 105 106 107 108
> x[c(3,5,8)]
[1] 103 105 108
> x[-4]
[1] 101 102 103 105 106 107 108
> x[c(-2,-4,-7)]
[1] 101 103 105 106 108
> x[c(F,T,T,F,T,T,F,F)]
[1] 102 103 105 106
> x[x%%2==0]
[1] 102 104 106 108
> x%%2 # 得到一个逻辑型向量
[1] 1 0 1 0 1 0 1 0
> x%%2==0
[1] FALSE  TRUE FALSE  TRUE FALSE  TRUE FALSE  TRUE
> x[c(F,T)]
[1] 102 104 106 108

通过which索引也可以定位到需要的向量:

> which(x%%2==0)
[1] 2 4 6 8
> x[which(x%%2==0)]
[1] 102 104 106 108

直接利用name进行索引

> height
  Tony   Mary   Lisa Victor   John 
   180    166    160    175    172 
> height["Mary"]
Mary 
 166 
> height[c("Tony","John")]
Tony John 
 180  172 

利用索引可以单独修改,也可以批量修改

> s[1:4]<-c(80,90)
> s
  Tony   Mary   Lisa   John Victor 
    80     90     80     90     93 
> s[-2:-3]<-100
> s
  Tony   Mary   Lisa   John Victor 
   100     90     80    100    100 

subset()函数

subset(x,subset) 可以接受向量、列表、矩阵、数量框。
函数的第二个参数subset是一个逻辑型向量。
subset不返回NA

> x<-c(86,70,80,NA,90,NA)
> x[x>=85] #86 NA 90 NA
[1] 86 NA 90 NA
> subset(x,x>=85) #86 90
[1] 86 90

对于其余数据类型:


                
  • 0
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
`sigprocmask()` 函数是用于修改进程的信号屏蔽字的函数,它可以阻塞或允许特定的信号。下面是关于 `sigprocmask()` 函数的一些学习笔记: 1. `sigprocmask()` 函数的头文件为 `<signal.h>`。 2. `sigprocmask()` 函数的原型为: ``` int sigprocmask(int how, const sigset_t *set, sigset_t *oldset); ``` - `how` 表示如何修改信号屏蔽字,有三个取值:`SIG_BLOCK`、`SIG_UNBLOCK` 和 `SIG_SETMASK`。分别表示阻塞、解除阻塞和设置信号屏蔽字。 - `set` 表示要修改的信号集合。 - `oldset` 表示原来的信号集合。 3. `sigprocmask()` 函数可以修改进程的信号屏蔽字,控制是否允许或阻塞某些信号的处理。 4. 信号屏蔽字是一个二进制位向量,每个位代表一个信号,如果该位为 1,则表示该信号被屏蔽,不会被处理;如果该位为 0,则表示该信号是允许的,可以被处理。 5. `sigprocmask()` 函数可以使用 `sigemptyset()`、`sigfillset()`、`sigaddset()`、`sigdelset()` 等函数来创建和修改信号集合。 6. `sigprocmask()` 函数可以用于防止信号的竞争条件,例如在多线程程序中使用信号处理函数时,可以使用信号屏蔽字来防止多个线程同时处理同一个信号。 7. `sigprocmask()` 函数还可以用于实现临界区保护,即在进入临界区时,屏蔽某些信号,以防止信号处理函数中断临界区代码的执行。 总之,`sigprocmask()` 函数是一个非常重要且常用的函数,可以用于控制信号的处理,保护临界区等。在学习和使用该函数时,需要注意其参数的含义和使用方法,以及信号屏蔽字的概念和使用。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值