R的assign函数

今天遇到一个问题,比如有一堆基因名,genes <- c("ADAMTS19", "AHSG", "APOA1", "APOA2", "APOC3"),我想挨个处理以后,把每个基因对应的结果放到一个新的变量里,而这个新的变量自动以该基因或相关的字符串命名。例如第一个就叫"gene_ADAMTS19"

在循环的时候,当然不能写for (gene in genes) {gene <- XXXX_function},这样只能留下最后一次循环的结果,前面的都会被覆盖掉,或者根本不能直接赋值。

思考这个问题最核心的部分在于,每个循环中的变量名都是不同的,赋值的结果怎样才能是变量?这个时候需要请出assign(x, value)函数,可以把value的值赋给x;这个时候x作为参数,就可以随意写了。就像这样:

for (gene in genes) {
  gene_name <- paste("gene", gene, sep = "_") # 每次的变量名都含有当前的"gene"。
  assign(gene_name, XXXX_function(gene, parameter2)) # 将XXXX_function的结果assign给当前的变量名。
}

你可能感兴趣的:(R的assign函数)