R语言基础函数没有排序后取前面几个的功能函数top

2023-09-04 15:59:46 浏览数 (1)

R语言基础函数很多都是超级简单的英文单词,以下是一些R语言中基础函数的简单英文单词举例:

  1. print():打印输出结果。
  2. sum():计算向量或矩阵中元素的总和。
  3. mean():计算向量或矩阵中元素的平均值。
  4. max():找出向量或矩阵中的最大值。
  5. min():找出向量或矩阵中的最小值。
  6. length():计算向量中元素的个数。
  7. sqrt():计算数值的平方根。
  8. round():将数值四舍五入到指定的小数位数。
  9. sort():对向量或矩阵进行排序。
  10. unique():返回向量中的唯一元素。

以上只是R语言中一些简单的基础函数例子,R语言提供了丰富的函数和包,涵盖了数据处理、统计分析、图形绘制等各个方面。这些简单的函数是R语言中的基础,对于数据处理和分析非常重要,可以方便地完成许多常见的任务。

基本上来说并不需要大家太高级的英文水平,都是可以玩转R语言的,昨天旁听咱们《生信技能树》的马拉松授课的R环节,有一个知识点是函数,给大家的现场互动考核题就是针对指定的一个数值型向量排序后选取前面的比较大的5个数字。R语言基础函数有max():找出向量或矩阵中的最大值,但是它仅仅是返回一个值,所以很多学员就触类旁通的说是不是应该是有一个函数top它可以排序后取前面几个数值呢。

其实类似的功能,在单细胞里面经常出现,比如我们使用了 单细胞分析工具||COSG鉴定marker基因,针对每个单细胞亚群都返回来了默认100个特征基因,但是可视化的时候100个基因太多了,所以针对每个基因搞一个top 10的展示,如下所示:

代码语言:javascript复制
library(COSG)
  marker_cosg <- cosg(
    sce.all,
    groups='all',
    assay='RNA',
    slot='data',
    mu=1,
    n_genes_user=100)
  
  save(marker_cosg,file = paste0(pro,'_marker_cosg.Rdata'))
  
  sce = sce.all
  ## Top10 genes
  library(dplyr)  
  top_10 <- unique(as.character(apply(marker_cosg$names,2,head,10)))
  # width <-0.006*dim(sce)[2];width
  # height <- 0.25*length(top_10) 4.5;height
  
  width <- 15 0.5*length(unique(Idents(sce)));width
  height <- 8 0.1*length(top_10);height
   
  DoHeatmap( subset(sce,downsample=100), top_10 , 
             size=3)

虽然R里面没有函数top它可以排序后取前面几个数值

但是我们可以自定义一个,实现对指定的数值型向量排序并选取前面的较大的5个数字。以下是函数的定义:

代码语言:javascript复制
get_top_5_largest <- function(input_vector) {
  sorted_vector <- sort(input_vector, decreasing = TRUE)
  top_5_largest <- sorted_vector[1:5]
  return(top_5_largest)
}

函数名为get_top_5_largest,接受一个数值型向量input_vector作为输入参数。首先,使用sort()函数对输入向量进行降序排序,并将结果存储在sorted_vector中。然后,从排序后的向量中选取前面的5个较大的数字,并将它们存储在top_5_largest中。最后,使用return()函数将选取的结果返回。

您可以使用这个函数来获取任意数值型向量的前5个较大的数字。例如:

代码语言:javascript复制
# 示例数据
my_vector <- c(10, 5, 8, 15, 20, 3, 25, 12, 18)

# 调用自定义函数
result <- get_top_5_largest(my_vector)

# 输出结果
print(result)

输出将会是:

代码语言:javascript复制
[1] 25 20 18 15 12

函数成功选取了输入向量my_vector中前5个较大的数字并返回了结果。您可以根据需要传入不同的数值型向量,获取其前5个较大的数字。

0 人点赞