前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >R语言学习常用函数

R语言学习常用函数

原创
作者头像
靓且有猫
修改2024-07-13 19:16:54
660
修改2024-07-13 19:16:54
举报
文章被收录于专栏:生信学习

1、which()函数

代码语言:R
复制
> a <- c( 1,5,7,4,9 )
> which ( a == 4 ) #返回a等于4的元素的位置,位置为4
[1] 4
> which(a>5)     #返回a大于5的元素的位置,第3与第5是大于5的
[1] 3 5

2、subset()函数

subset()函数是返回符合条件的元素,但是会忽略NA值。注意:条件应该为逻辑值,否则会报错

代码语言:R
复制
> x <- c(1,3,7,NA,10) #一个含有NA值的向量
> x[x>6] #用向量的索引查看下x>6的元素
[1] 7,NA,10
>subset(x,x>6)
[1]7,10

3、ifelse()函数

ifelse(x,a,b)函数判断元素x是否符合条件,如果符合,返回a,如果不符合返回b,其中x为逻辑值

代码语言:R
复制
> X <- 1:10
> Y<- ifelse(X%%2==0,1,0) #如果为偶数,返回1,奇数返回0(X %% 2 == 0:这里的%%是取模运算符,用来计算X中每个元素除以2的余数。X %% 2 == 0这个表达式检查X中的每个元素是否能被2整除(即余数是否为0)。
ifelse(X %% 2 == 0, 1, 0):对于X中的每个元素,如果它能被2整除(即X中的偶数),则Y中的对应位置为1;如果它不能被2整除(即X中的奇数),则Y中的对应位置为0。)
> Y
[1] 0 1 0 1 0 1 0 1 0 1

进阶版

sample()函数在R中用于随机抽样。

c(5,6)是一个向量,包含两个元素:5和6。这是抽样的总体或池。

50表示要抽取的样本大小,即从c(5,6)中随机抽取50个元素。

replace = T参数设置为T(或TRUE),表示抽样是带放回的,即每次抽取一个元素后,该元素会被放回池中,因此下一次抽样时它仍有可能被再次抽取。如果设置为F(或FALSE),则表示抽样是不带放回的。

代码语言:R
复制
> temp0 <- sample(c(5,6),50,replace=T)
> temp0
[1] 5 5 5 5 6 5 5 5 5 5 5 6 6 5 5 6 6 6 5 5 5 6 5 5 5 5 6 6 5 5 5 6
[33] 6 6 6 6 5 5 5 6 6 5 6 6 6 5 6 6 5 6
> #计算下temp0中5的出现次数
> #方法一
> temp1 <-ifelse(temp0==5,1,0)#让5等于1,不为5的等于0
> sum(temp1)
[1] 28
> #方法二
> temp2 <-temp0
> temp2[temp2==5] <- 1
> temp2[temp2==6] <- 0
> sum(temp2)
[1] 28
> #方法三
> temp3 <- which(temp0==5)
> length(temp3)
[1] 28
> length(which(temp0==5))
[1] 28

向量相等

有很多种方法判断两个向量是否相等

1、all()函数,返回逻辑值

2、identical()函数,判断两个向量是否相等,返回逻辑值

代码语言:R
复制
> a1 <- c(1,4,5,9)
> a2 <- c(1,4,5,9)
> a3 <- c(3,4,5,9)
> a4 <- 1:5
> a5 <- c(1,2,3,4,5)
> all(a1,a2)
[1] TRUE
Warning messages:
1: In all(a1, a2) : 将种类为'double'的参数强迫转化为逻辑值
2: In all(a1, a2) : 将种类为'double'的参数强迫转化为逻辑值
> all(a1,a3)
[1] TRUE
Warning messages:
1: In all(a1, a3) : 将种类为'double'的参数强迫转化为逻辑值
2: In all(a1, a3) : 将种类为'double'的参数强迫转化为逻辑值
> identical(a1,a2)
[1] TRUE
> identical(a1,a3)
[1] FALSE
> identical(a4,a5)
[1] FALSE

控制语句

ifelse()函数,ifelse(x,a,b),如果x为TRUE,则执行a,否则执行b

for循环

for(i in x){......},i会循环取遍x中的值

代码语言:R
复制
> for (i in c(1,5,7))
+   {
+   print(i^2)
+   }
[1] 1
[1] 25
[1] 49

next与break

代码语言:R
复制
>  for (i in c(1,5,7))
+  {
+    ifelse(i<=5,print(i^2),next)
+  }
[1] 1
[1] 25
>  for (i in c(1,5,7,8))
+  {
+    ifelse(i<=7,print(i^3),break)
+  }
[1] 1
[1] 125
[1] 343

which()函数

代码语言:R
复制
> a<- 3
> while(a==3)
+ {
+   print(a+1)
+   a<- FALSE
+   }
[1] 4

repeat()函数

重复函数,搭配if、break使用,不用break跳出程序将陷入死循环

代码语言:R
复制
> a <- 1
> repeat
+ {
+   a<- a+1
+   if(a>7)
+   {
+     break
+   }
+ }
> a
[1] 8

if...else...语句

代码语言:R
复制
> for (i in c(1,2,3,4,5))
+ {
+  if(i<=3)
+  {
+    print(i^2)
+  }else
+  {
+    print(i^3)
+  }
+ }
[1] 1
[1] 4
[1] 9
[1] 64
[1] 125

逻辑函数学过Python语言,接受非常快,嘻嘻

逻辑运算符

&& 与

|| 或

! 非

函数返回值

1.利用return返回结果

2.如果灭有return则返回语句最后一行的执行结果

代码语言:R
复制
> F <- function(a)
+ {
+   k<- a
+   return(k)
+ }
> F(3)
[1] 3
> f1 <- function(a,b)
+ {
+   d <- a-b
+   c <- a+b
+   c
+ }
> f1(3,6)
[1] 9

全局变量与局部变量

全局变量理解为函数内部无法改变的变量,局部变量就是在函数内部的变量,具有临时性

代码语言:R
复制
> b <- 5 #全局变量
> f3 <- function(x)
+ {
+   b<- 7 #局部变量,不会影响外面的b
+   b1 <- x
+   b2 <- b+b1
+   return(b2)
+ }
> f3(6)
[1] 13
> b
[1] 5
> b1 #在函数中是局部变量,函数返回结果后被删除,所以报错
错误: 找不到对象'b1'

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 进阶版
  • 向量相等
  • 控制语句
    • for循环
      • next与break
        • which()函数
          • repeat()函数
            • if...else...语句
              • 逻辑运算符
                • 函数返回值
                  • 全局变量与局部变量
                  领券
                  问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档