首页 > 解决方案 > 将字符操作应用于单行代码中的一个列表

问题描述

我想生成列表 ["chr1", "chr2", ... "chr22"]。我想出的解决方案是抽象出将整数转换为染色体名称然后对其进行重叠的操作:

toChromName <- function(x) {
  paste("chr", toString(x), sep = '')
}
autosomes = lapply(1:22, toChromName)

但我想知道是否有一种方法可以在一行中执行此操作,类似于在 Python 中使用 lambda。

标签: rlapply

解决方案


toString没有做预期的事情。paste是矢量化的,所以我们可以直接vector对数字执行此操作,而不是循环每个元素并应用函数

paste0("chr", 1:22)

IE。

toChromName <- function(vec) {
            paste0("chr", vec)
  }
toChromName(1:22)
#[1] "chr1"  "chr2"  "chr3"  "chr4"  "chr5"  "chr6"  "chr7"  "chr8"  "chr9"  "chr10" "chr11" "chr12" "chr13" "chr14" "chr15" "chr16" "chr17" "chr18"
#[19] "chr19" "chr20" "chr21" "chr22"

如果在 a 中需要list,使用as.list转换为 alist

as.list(toChromName(1:22))

推荐阅读