识别R in for循环中值列表中的项目

时间:2016-04-07 23:21:02

标签: r

我在让R在函数调用中识别我的值列表(在RStudio中)中的项目时遇到了一些麻烦(这里只是将它称为泛型函数)。这是一个例子......如果我直接输入以下内容,以下工作正常:

result <- function(cnv.chr1.S1, cnv.chr1.S2, cnv.chr1.S3)

因为cnv.chr1.S1,cnv.chr1.S2和cnv.chr1.S3是我之前创建的对象(特别是GRanges对象)。

但是当我在不同的染色体上循环并且实际上有超过3个样本(S1,S2,S3)时,我尝试了以下(在此简化)

chrom <- paste("chr", 1:1, sep = "")
sample.names <- paste("S", 1:3, sep = "")
for (thischrom in chrom)
{
  for (sample in sample.names)
  {
    a <- function(list(paste(paste("cnv", thischrom, sep = "."), sample.names, sep = ".")))
  }
}

但是,它不起作用,因为

paste(paste("cnv", thischrom, sep = "."), sample.names, sep = ".")

只创建一个与我的“值”列表中的项目名称相同的项目的字符列表。如何让R访问我的值列表中的相应对象?

感谢您的任何想法!

史蒂夫

1 个答案:

答案 0 :(得分:-1)

你在找这样的东西吗?

library(dplyr)

chrom <- paste("chr", 1:1, sep = "")
sample.names <- paste("S", 1:2, sep = "")

cnv.chr1.S1 = c(1, 2)
cnv.chr1.S2 = c(2, 3)

result = 
  data_frame(chrom = chrom) %>%
  merge(data_frame(sample.names = sample.names) ) %>%
  rowwise %>%
  mutate(object = 
           paste("cnv", chrom, sample.names, sep = ".") %>%
           parse(text = .) %>%
           eval %>%
           list)