使用不同的变量名保存在循环中

时间:2015-02-01 15:26:13

标签: r function save

我有一个使用数据帧列表(variables)的函数,并给出两个数据帧(对于列表中的每个数据帧)作为输出,我想用不同的变量名保存每个数据帧(而不是up.valdown.val)和不同的文件名。变量和文件名都存储在我创建的字符向量中。

  filtering_data <- function(x){

  x <- as.data.frame(x)
  pval <- which(x$P.Value < 0.05)
  pval <- x[pval,]


  up.pval <- which(pval$t > 0)
  down.pval <- which(pval$t < 0)

  up.pval <- pval[up.pval,]
  down.pval <- pval[down.pval,]

  save(up.pval, file = file.Rda)
  save(down.pval, file =  file.Rda )
  }

lapply(variables, filtering_data)

1 个答案:

答案 0 :(得分:0)

我认为您希望使用assign将值分配给新名称,然后将变量名称作为list参数提供给save。如:

filtering_data <- function(x,varName,file.rda){ 

    [calculations go here]]

    # assign() only assigns one value so check the length of varName
    stopifnot(length(varName)==1)

    # make the new variable names
    name.up <- paste0(varName,'.','up')
    name.down <- paste0(varName,'.','down')

    # assign the values to them in the current environment
    assign(name.up,up.pval)
    assign(name.down,down.pval)

    # save the named variables
    save(list=name.up,  file=file.rda)
    save(list=name.down,file=file.rda)
}

顺便说一下,file.rda应该是一个参数,而不是假设它已经定义了